当用户采用yaml文件来存储系统的配置参数,还需借助配置管理模块提供的CfgMgr接口进行参数管理,实现参数的获取、快照、重载等功能。
本章以参数文件param.yaml为例,介绍CfgMgr接口的功能和使用方法。
|
param1:
a: 12
b: true
c: "node"
param2: 234
|
include依赖的头文件,示例代码如下:
|
#include "cfgmgr/param.h"
#include <map>
#include <string>
|
- 使用CfgMgr::Get接口获取参数值。示例代码如下:
|
int aValue;
CfgMgr::Get("/param1/a", aValue); // 获取param1内a对应的值,此时aValue为12
bool bValue;
CfgMgr::Get("/param1/b", bValue); // 获取param1内b对应的值,此时bValue为true
std::map<std::string, std::string> param1Value;
CfgMgr::Get("/param1", param1Value); // 获取param1内所有参数,此时param1Value为 {{a, 12}, {b, true}, {c, "node"}}
|
- 使用CfgMgr::Set接口设置参数值。示例代码如下:
|
int aValue = 24;
CfgMgr::Set("/param1/a", aValue); // 设置param1内a对应的值为24
|
- 使用CfgMgr::Monitor接口检查参数、CfgMgr::CancelMonitor接口取消检查参数。示例代码如下:
|
void printA(int a)
{
std::cout<<"/param1/a is : "<<a<<std::endl;
}
CfgMgr::Monitor("/param1/a", printA, false); // 检查参数/param1/a,当该参数被其它节点Set时,会执行printA回调函数
CfgMgr::CancelMonitor("/param1/a"); // 取消检查参数/param1/a
|
- 使用CfgMgr::CreateSnapshot接口创建参数快照,记录当前所有参数配置;再调用CfgMgr::RevertSnapshot接口还原参数快照;如需删除参数快照可使用CfgMgr::DeleteSnapshot接口。示例代码如下:
|
std::string filename = "demoParam"; // 快照文件名称,不能包含路径
CfgMgr::CreateSnapshot(filename); // 创建快照,若快照文件同名,新的文件会覆盖旧的文件
CfgMgr::RevertSnapshot(filename); // 还原快照
CfgMgr::DeleteSnapshot(filename); // 删除快照
|
- 使用CfgMgr::Reload接口重载yaml文件。当待加载的yaml文件发生变更,可通过该接口重新加载yaml文件并生成新的配置文件。示例代码如下: