Parameter

相关链接

代码文件:

参考示例:

接口概述

AimRT 中提供了一个简单的模块级 Key-Val 参数功能,模块可以通过调用CoreRef句柄的GetParameterHandle()接口,获取aimrt::parameter::ParameterHandleRef句柄,来使用此功能。该句柄提供的核心接口如下:

namespace aimrt::parameter {

class ParameterHandleRef {
 public:
  std::string GetParameter(std::string_view key) const;

  void SetParameter(std::string_view key, std::string_view val) const;
};

}  // namespace aimrt::parameter

使用注意点如下:

  • std::string GetParameter(std::string_view key)接口:用于获取参数。

    • 如果不存在 key,则返回空字符串。

    • 该接口是线程安全的。

  • void SetParameter(std::string_view key, std::string_view val)接口:用于设置/更新参数。

    • 如果不存在 key,则新建一个 key-val 参数对。

    • 如果存在 key,则更新 key 所对应的 val 值为最新值。

    • 该接口是线程安全的。

  • 无论是设置参数还是获取参数,都是模块级别的,不同模块的参数互相独立、互不可见。

除了通过 CPP 接口中的参数接口来设置/获取参数,使用者也可以通过 parameter_plugin,通过 HTTP 等方式来从外部设置/获取参数。具体请参考parameter_plugin 文档

使用示例

一个简单的使用示例如下:

class HelloWorldModule : public aimrt::ModuleBase {
 public:
  bool Initialize(aimrt::CoreRef core) override {
    auto parameter_handle = core.GetParameterHandle();

    std::string key = "test key";
    std::string val = "test val";

    // Set
    parameter_handle.SetParameter(key, val);

    // Get
    std::string check_val = parameter_handle.GetParameter(key);

    assert(val == check_val);

    return true;
  }
};