(四)SDN 控制器 NOX 源码分析之—— DSO-deployer

DSO_component_context
组件的上下文类,保存组件的运行状态及组件的实例
构造函数
DSO_component_context::DSO_component_context(const Component_name& name, const std::string& config_path)
构造函数初始化组件的状态与状态对应触发的事件句柄;并将依赖组件列表初始化到【dependencies】成员变量中

接口
void DSO_component_context::load()
用途是得到组件句柄,句柄保存在变量DSO_component_context::handle中
DSO_component_context::instantiate_factory()
这一句与组件实现时必须在最后加REGISTER_COMPONENT(Simple_component_factory<组件名>, 组件名)有关系,通过这个调用可以得到生成组件实例的工厂方法;
void DSO_component_context::instantiate()
为当前组件上下文对象生成组件实例
void DSO_component_context::configure()
配置当前组件上下文对象中已经包含的组件实例
void DSO_component_context::install()
启动组件上下文中的组件实例
DSO_component_context::component_factory_function* DSO_component_context::find_factory_function(const char* name) const
DSO_component_context::instantiate_factory()所调用,作用是从动态加载的组件中找到“name”对应的函数名句柄
成员变量

DSO_deployer
动态部署器是用来管理动态加载的组件的。当它被构造时就会对动态组件目录进行遍历,将所有的组件都添加到管理成员中
构造函数
DSO_deployer::DSO_deployer(const Component_context* ctxt, const list<string>& lib_dirs)
1.将lib_dirs下所有应用程序目录(含meta.json)扫一遍;
2.把所有扫到的组件生成DSO_component_context实例,保存到【uninstalled_contexts】成员变量中;
3.将此deployer保存到kernel的部署器列表中;

接口
Component* DSO_deployer :: instantiate(const Component_context* ctxt, const Path_list& lib_search_paths)
得到DSO_Deployer实例; 这个方法必须配合Static_component_context类使用才

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值