控制器插件入口
插件的入口模块
该模块作为插件的入口,类似程序的main函数。可以在插件里面定义多个入口模块和优先级,控制器加载的时候 按优先级依次加载。
入口模块加载可分为几个阶段。
- 合法校验:
这个阶段主要处理插件是否合法可以加载。检查插件的包结构是否规范,版本是否符合要求等。 - 授权校验:
在插件初始化之前进行授权校验,由插件开发者决定插件是否需要授权。需要二次授权的,授权通过才会往 下执行插件初始化加载流程。 - Init阶段:
所有的插件加载构造完成之后,开始进行下一阶段的初始化。此阶段将会根据插件的入口模块的优先级排序, 按照优先级高的模块先执行规则,执行完之后才会开始下一个模块的执行。同优先级的执行顺序不固定。 - Start阶段:
在所有的插件入口模块执行完Init阶段之后,开始执行Start阶段,这里执行逻辑同Init阶段,按照优先级 依次执行。可在Start阶段执行插件逻辑。 - Stop阶段:
控制器退出之前,会调用该阶段进行资源的清理,此阶段执行逻辑依旧是按照模块的优先级依次执行。 - 析构阶段:
此阶段会进行各入口模块的析构,析构顺序不固定。因此,对应析构资源回收有依赖的可根据优先级在Stop 阶段执行。
控制器插件校验阶段:

授权校验:
插件是否需要授权才可以使用。如果需要授权,针对每台机器必须授权才可以使用。可联系珞石获取针对每台机器的授权码。
授权控制在src/launch/authorize.cpp。
定义为true表示需要授权校验。默认不校验。
EXPORT const bool plugin_need_authorize = false;
控制器插件初始化流程

使用示例:
#include "launch_api.hpp"
//1继承实现LaunchAPI并实现具体的Init,Start,Stop函数
class Launch:public xcore_api::launch::LaunchAPI{
public:
explicit Launch();
virtual void Init() override;
virtual void Start() override;
virtual void Stop() override;
virtual ~Launch();
};
//2 在cpp中声明为入口模块
LAUNCH_MODULE_PRIORITY(Launch,0)//带优先级
LAUNCH_MODULE(Launch) //不带优先级
//3 实现具体的Init,Start,Stop函数
已在插件的src/launch模块实现该例子,用户只需要在具体的阶段注入自行实现的函数即可。