CoreRef
相关链接
代码文件:
参考示例:
接口概述
aimrt::CoreRef
是调用框架功能的根句柄类型,可以通过以下两种方式获取:
开发者继承
ModuleBase
类型实现自己的Module
,在Initialize
方法中,AimRT 框架会传入一个aimrt::CoreRef
句柄;App 模式下,通过 Create Module 方式,AimRT 会在创建一个
Module
后返回对应模块的aimrt::CoreRef
句柄;
aimrt::CoreRef
中提供的核心接口如下:
namespace aimrt {
class CoreRef {
public:
ModuleInfo Info() const;
configurator::ConfiguratorRef GetConfigurator() const;
executor::ExecutorManagerRef GetExecutorManager() const;
logger::LoggerRef GetLogger() const;
rpc::RpcHandleRef GetRpcHandle() const;
channel::ChannelHandleRef GetChannelHandle() const;
parameter::ParameterHandleRef GetParameterHandle() const;
};
} // namespace aimrt
aimrt::CoreRef
的使用注意点:
使用示例
以下是一个简单的使用示例,演示了继承ModuleBase
类型时如何获取并使用aimrt::CoreRef
句柄:
class HelloWorldModule : public aimrt::ModuleBase {
public:
// ...
bool Initialize(aimrt::CoreRef core) override {
// Get log handle
auto logger = core.GetLogger();
// Use log handle
AIMRT_HL_INFO(logger, "This is a test log");
return true;
}
};
以下是另一个简单的使用示例,演示了 App 模式下如何获取并使用aimrt::CoreRef
句柄:
int32_t main(int32_t argc, char** argv) {
AimRTCore core;
// Initialize
AimRTCore::Options options;
if (argc > 1) options.cfg_file_path = argv[1];
core.Initialize(options);
// Get CoreRef handle
aimrt::CoreRef module_handle(core.GetModuleManager().CreateModule("HelloWorldModule"));
// Get log handle
auto logger = module_handle.GetLogger();
// Use log handle
AIMRT_HL_INFO(logger, "This is a test log");
// ...
}