模块篇(sp_mod)
初始化
通过配置组件中的配置信息,生成模块和实体对象
Entity与 mod 的关系
- 一个 mod 可以对应多个 Entity,在 GUIConsole 窗口看到的所有条目都是实体的概念,包括状态也是实体的状态
- epid: 模块在从配置中读取时的实际序号(sp_cfg_shell_module_t::idx),暂且扩写为 entity parent id
- mod 是一个进程,entity 必须在 mod 加载后才能进行创建。
实体可订阅事件
模块的启动来源(进程建立)
- app::on_req:
- CSpShellConsole::StartEntity:
实体状态
卸载模块与终止模块的区别在于:后者先杀死模块进程,然后将所属实体置为kill状态,而前者要判断一下当前的模块中的实体状态,如果有处于正常运行状态的,则不作任何操作
主要关联代码
kickoff_startlist()::app.cpp
load_module()::sp_mod
create_module_process()::sp_mod
依赖关系
- 对于实体,依赖服务组件,用于调用操作实体的处理函数(sp_mod_entity_stub_t)
- 对于sp_mod_mgr_t,依赖服务组件,用于调用实体状态变动的函数(mgr_on_pkt)