CfgMgr::Monitor
产品支持情况
产品  | 
是否支持  | 
|---|---|
x  | 
|
x  | 
|
√  | 
|
x  | 
|
x  | 
|
x  | 
功能说明
检查指定参数,当该参数发生Set操作时会调用回调函数。
函数原型
1 | uint32_t CfgMgr::Monitor(const std::string &kParam, std::function<void(T)> monitorFunc, const bool changeNeeded = false, const std::string &srv = "")  | 
功能安全等级
ASIL-D
参数说明
参数名  | 
输入/输出  | 
说明  | 
|---|---|---|
kParam  | 
输入  | 
key值,为参数名称或参数名称域(namespace),例如/ros/use_sim_time、/ros,key值开头加不加“/”都可以。  | 
monitorFunc  | 
输入  | 
回调函数,函数入参支持的类型参见本表“使用说明”。  | 
changeNeeded  | 
输入  | 
  | 
srv  | 
输入  | 
参数组,和资源文件对应,不填则默认到有权限的参数组中获取参数,效率会降低。  | 
返回值
返回uint32_t类型,成功返回CFGMGR_SUCCESS,失败返回对应的错误码。
约束说明
- 非模板函数,针对各种类型进行重载,回调函数参数支持的类型有:
std::string、double、float、int、bool、std::vector<std::string>、std::vector<double>、std::vector<float>、std::vector<int>、std::vector<bool>、std::map<std::string, std::string>、std::map<std::string, double>、std::map<std::string, float>、std::map<std::string, int>、std::map<std::string, bool>。
 - key值需小于128个字节、单个value值需小于256个字节。
 - 检查多个参数时需多次调用该接口。
 - 调用检查函数会启动单独的线程,对于同一个组多个检查函数共用一个线程,不同组不同线程。
 - 对于检查Set操作,只有Set的key和Monitor的key完全一致时才会被检查到。
 - 按完整的key检查时,Load和Revert操作也会触发检查。
 - 同一个进程对同一个key调用多次Monitor时,注册的多个回调函数都会生效,即当这个key有Set操作时,所有的回调会被依次调用。
 - 如果调用了Monitor接口,在进程退出时,一定要调用CfgMgr::CancelMonitor接口释放线程,否则可能coredump。如果调用了OpenHiva::Shutdown,可不调用CancelMonitor接口,因为OpenHiva::Shutdown里默认会调用CancelMonitor接口。
 - 检查参数失败时,需自行判断是否需要上报故障或其他处理。
 - 接口返回失败,可能的原因有:没权限、不存在该参数、加载参数时未加载成功、数据传输失败(管理面)。
 
父主题: 配置管理相关接口