昇腾社区首页
中文
注册

通过接口管理参数

当用户采用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();