通过接口管理参数
当用户采用yaml文件来存储系统的配置参数,还需借助配置管理模块提供的CfgMgr接口进行参数管理,实现参数的获取、快照、重载等功能。
本章以参数文件param.yaml为例,介绍CfgMgr接口的功能和使用方法。
1 2 3 4 5 |
param1: a: 12 b: true c: "node" param2: 234 |
include依赖的头文件,示例代码如下:
1 2 3 |
#include "cfgmgr/param.h" #include <map> #include <string> |
- 使用CfgMgr::Get接口获取参数值。示例代码如下:
1 2 3 4 5 6
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接口设置参数值。示例代码如下:
1 2
int aValue = 24; CfgMgr::Set("/param1/a", aValue); // 设置param1内a对应的值为24
- 使用CfgMgr::Monitor接口检查参数、CfgMgr::CancelMonitor接口取消检查参数。示例代码如下:
1 2 3 4 5 6
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接口。示例代码如下:
1 2 3 4
std::string filename = "demoParam"; // 快照文件名称,不能包含路径 CfgMgr::CreateSnapshot(filename); // 创建快照,若快照文件同名,新的文件会覆盖旧的文件 CfgMgr::RevertSnapshot(filename); // 还原快照 CfgMgr::DeleteSnapshot(filename); // 删除快照
- 使用CfgMgr::Reload接口重载yaml文件。当待加载的yaml文件发生变更,可通过该接口重新加载yaml文件并生成新的配置文件。示例代码如下:
1
CfgMgr::Reload();
父主题: 配置管理