POX学习笔记之组件注册与事件
来源:互联网 发布:判断二维数组是否为空 编辑:程序博客网 时间:2024/05/17 08:53
一、组件向core注册的方法
1. core.register("core中组件的名字",组件类的实例):创建实例时参数已经传入
2. core.registerNew(组件类名,参数...):若要修改在core中组件的名字,需要在组件类定义时加一个属性_core_name = "新名字"。它只是register的一个封装。
以上两种方法注册的时候都会创建类的实例,因而会调用组件类的__init__函数。
二、定义事件
以上两种方法注册的时候都会创建类的实例,因而会调用组件类的__init__函数。
二、定义事件
POX中的事件都是revent.Event类的子类的实例。
class 事件名(Event):
类定义
三、关联事件处理函数的方法
1. 能触发事件的类的实例.addListener(事件类, 事件处理函数):事件类必须在作用域内,要不然不识别
2. 能触发事件的类的实例.addListenerByName("事件类名", 事件处理函数):事件类可以不在作用域内,仅传递一个类名字符串
3. 能触发事件的类的实例.addListeners(事件处理函数所在类的实例):以foo.addListeners(bar)为例,POX将检查foo能触发的每个事件EventName,若在bar所在类有_handle_EventName函数,则自动关联处理函数。
4. 能触发事件的类的实例.addListeners(事件处理函数所在类的实例,prefix="前缀名"):当处理函数所在类要处理来自多源的相同事件时,可以加前缀来进行区分。比如
class VeryHungryPerson (object):
def __init__ (self):
master_chef.addListeners(self, prefix="master")
backup_chef.addListeners(self, prefix="secondary")
def _handle_master_SpamFinished (self, event):
print "Spam is ready! Smells delicious!"
def _handle_secondary_SpamFinished (self, event):
print "Backup spam is ready. Smells slightly less delicious."
5.事件监听者(一个类)的__init__函数中self.listenTo(产生事件的类)
四、触发事件
一个触发事件的类继承自revent.EventMixin,并在_eventMixin_Events中声明它触发的事件。
1. 类函数定义中调用self.raiseEvent(事件类名("参数"))或者self.raiseEvent(事件类名,"参数"),后者更好一些,因为可以在没有监听者的时候避免创建对象。
2. 能触发事件的类的实例.raiseEvent(事件类名("参数"))或者能触发事件的类的实例.(事件类名,"参数"),同理后者好一些。
五、总体架构(参考 http://richardzhao.me/?p=209链接里的GoingUpEvent事件是boot函数调用的core.goUp()函数中触发的。)
1.定义事件类:class TestEvent (Event):
2.定义触发事件的类
class TestEvent_Generator (EventMixin):
类里会有类似self.raiseEvent(TestEvent, stuff)的语句。
3.定义监听并处理事件的类:
class TestEvent_Listener (EventMixin):
类里会有self.listenTo(core.TestEvent_Generator)
会有_handle_TestEvent (self, event):
0 0
- POX学习笔记之组件注册与事件
- POX学习笔记之事件与对应模块总结
- POX学习笔记之事件与对应模块总结
- POX学习笔记之POX的启动
- POX学习笔记:事件系统分析
- POX学习笔记之POX拓扑发现原理分析
- POX学习笔记:添加事件监听的方法(POX事件系统后续)
- 03.Spring Cloud学习笔记之服务注册与服务发现组件Eureka
- EventBus事件总线组件:事件通知功能之事件注册
- POX组件介绍
- pox组件介绍
- POX学习笔记:从POX启动开始——boot.py文件解读
- POX学习笔记:POX接收OpenFlow消息的处理流程分析
- pox事件系统
- POX及组件启动分析
- 学习pox心得
- pox控制器学习总结
- Metro UI CSS 学习笔记之组件(菜单与导航)
- Spring版本HelloWorld
- Android Fragment完全解析,关于碎片你所需知道的一切
- 我的2013年
- matlab编程入门学习(4)
- 去除在线看电影或者电视剧、综艺节目之前各种广告
- POX学习笔记之组件注册与事件
- google collections介绍
- Qt的线程和 signal-slot
- java设计模式学习笔记-适配器模式
- jetty的安装和运行
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 拜占庭将军问题中的签名算法SM,以及有关证明。
- 删除主键并重建主键
- 使用匿名名称空间需要注意事项