(三)SDN 控制器 NOX 源码分析之—— Event_dispatcher
来源:互联网 发布:店群软件 服务器 编辑:程序博客网 时间:2024/06/10 19:01
event-dispatcher.hh
typedef boost::function<void(const boost::system::error_code& error)> Callback
回调函数的类型定义
static Component* instantiate(const Component_context*, size_t n_threads);
生成一个Event-dispatcher对象
void post(const Event&);
立刻发送一个事件
std::unique_ptr<boost::asio::deadline_timer>
post(const Callback& callback, const timeval& duration);
定义一个带有时间控制的消息/* Posts 'callback' to be called after the given 'duration' elapses. The
* caller must not destroy the returned Timer, but may use it to cancel or
* reschedule the timer, up until the point where the timer is actually
* invoked. */
void dispatch(const Event&) const
立刻发送一个消息出去
boost::asio::io_service& get_io_service()
得到事件发送的io_service
template <typename T>
inline
void register_event()
注册事件,使用方法为:
register_event<Event类>();
bool register_handler(const Component_name&,
const Event_name&,
const Event_handler&);
为事件注册句柄,带组件名
void register_handler(const Event_name&,
const Event_handler&, int order);
为事件注册句柄,同一个事件有多个句柄的情况下使用这个语句,可以为句柄定义优先级,句柄按顺序先后依次执行
event-dispatcher.cc
1.bool
Event_dispatcher::register_handler(
const Component_name& component_name,
const Event_name& event_name,
const Event_handler& h);
首先查看的是注册的事件有没有存在,不存在返回false;接下来根据组件在对应事件中的优先级,把句柄按优先级插入到call_chain_map;
2.Event_dispatcher::dispatch(const Event& event) const
的实现是查找call_chain_map,找到事件对应的句柄,依次执行,直到执行完所有句柄或遇到句柄返回STOP
3.register_event(const Event_name& name)是为新的事件插入到priority_map中;
4.priority_map保存着响应事件时,应组件的执行优先级;其数据结构是两级字典:【事件名【组件名,优先级】】;通过读取注册文件(etc/nox.meta.json),根据注册文件中组件的顺序,给组件设置优先级;
(转载请注明出处:http://blog.csdn.net/gulansheng/article/details/46502847)
0 0
- (三)SDN 控制器 NOX 源码分析之—— Event_dispatcher
- (一)SDN 控制器 NOX 源码分析之—— nox_main.cc
- (二)SDN 控制器 NOX 源码分析之—— Component
- (四)SDN 控制器 NOX 源码分析之—— DSO-deployer
- (五)SDN 控制器 NOX 源码分析之—— Connection_manager
- (六)SDN 控制器 NOX 源码分析之—— Kernel
- (七)SDN 控制器 NOX 源码分析之—— static-deployer
- (八)SDN 控制器 NOX 源码分析之—— deployer
- SDN控制器之旅(一)——NOX环境搭建
- 【SDN控制器分析之三】ONOS Device Subsystem
- Ubuntu系统源码安装SDN控制器之ryu
- 【SDN控制器分析之二】ONOS网络状态表述
- SDN控制器Floodlight源码学习(三)--控制器和交换机交互(1)
- SDN控制器——POX基本使用
- Nox学习(1)——框架结构
- SDN控制器之POX篇
- SDN和Openflow flowvisor NOX
- NOX的使用之学习篇【三】
- HTML CSS JS(一)
- MyEclipse移动Web模拟器指南(一)
- java线程同步-synchronized
- cocos获取当前时间
- iOS开发笔记--公司开发者账号申请详细教程
- (三)SDN 控制器 NOX 源码分析之—— Event_dispatcher
- STL中常用的vector,map,set 用法
- 简单数据结构之链式表(C++实现)
- selenium_webdriver(python)调用js脚本
- c#FileStream文件读写(转)
- redis cluster概览
- Storm中设置源节点的输出和目的节点的输入具体步骤
- 自定义导航栏和状态栏
- Eclipse 插件: JSEclipse