apollo::cyber::class_loader::SharedLibrary::SharedLibrary ( const std::string & path ) explicit 在文件 shared_library.cc 第34 行定义. 34{ Load(path, 0); }◆ SharedLibrary() [3/4]apollo::cyber::class_loader::SharedLibrary::SharedLibrary ( const std::string & path, int flags ...
ClassLoaderManager () virtual ~ClassLoaderManager () bool LoadLibrary (const std::string &library_path) void UnloadAllLibrary () bool IsLibraryValid (const std::string &library_path) template<typename Base > std::shared_ptr< Base > CreateClassObj (const std::string &class_name) templa...
2. 通过"class_loader_manager_"加载模块,后面我们会接着分析"ClassLoaderManager"的具体实现,加载好对应的类之后在创建对应的对象,并且初始化对象(调用对象的Initialize()方法,也就是说所有的cyber模块都是通过Initialize()方法启动的,后面我们会接着分析Initialize具体干了什么)。 这里的"classloader"其实类似java中...
#include <memory> #include "cyber/class_loader/class_loader.h" #include "cyber/component/component.h" #include "cyber/examples/proto/examples.pb.h" using apollo::cyber::examples::proto::Driver; using apollo::cyber::Component; using apollo::cyber::ComponentBase; class CommonComponentSample : ...
cyber/node/node.h#include"cyber/node/node_channel_impl.h"#include"cyber/node/node_service_impl.h"01.classNode{public: template <typenameM0, typenameM1, typenameM2, typenameM3> friendclassComponent; friendclassTimerComponent; autoCreateService(conststd::string& service_name,consttypenameService<Request...
实现的方式是通过classloader来进行动态的加载动态库 ModuleController::LoadModule // 1. 加载动态库 class_loader_manager_.LoadLibrary(load_path); // 3. 创建对象 std::shared_ptr<ComponentBase> base =class_loader_manager_.CreateClassObj<ComponentBase>(class_name); ...
ClassLoaderManager创建并管理ClassLoader实例。 成员libpath_loader_map_ 是从组件名到ClassLoader实例的映射。 1.2 ModuleController Modulecontroller负责根据apollo模块的dag配置文件,加载指定的组件。ComponentBase定义组件的接口。 成员class_loader_manager_ 是ClassLoaderManager实例。
class loader 可能会加载它 内置Reader 有相应的 Node 通过Scheduler 进行调度 我们接下来看 Component 相关的头文件。 感谢CyberRT 的开发者,关键代码注释的很明白。 一个Component 最多可以支撑 4 个 Channel 进行消息处理 Component 继承自 Component,开发者可以自定义 Component,只要继承 Component 并复写它的 Init...
•通过classloader加载component模块到内存,创建component对象,调用Initialize()初始化。(Initialize中会调用Init) •创建协程任务,并且注册Process()回调,当数据到来的时候,唤醒对象的协程任务执行Process()处理数据。(Process会调用Proc) 该函数主要部分解释如下: ...
1#include "cyber/examples/common_component_example/common_component_example.h" 2#include "cyber/class_loader/class_loader.h" 3#include "cyber/component/component.h" 4 5bool CommonComponentSample::Init() { 6 AINFO << "Commontest component init"; 7 return true; 8} 910bool CommonComponentSamp...