内容源自注释文件。文档位置: ../pox/lib/revent/revent.py

1、监听单独的event可以采用的方法:
<br /> def bar_handler(self, event):<br /> print "bar!", event</p> <p>pox.core.addListener(UpEvent, bar_handler)

2、监听多个event的方法:

<br /> class Sink (EventMixin):<br /> def __init__(self):<br /> # 通知revent,监听pox.core产生的events<br /> self.listenTo(pox.core)</p> <p>def _handle_ComponentRegistered (self, event):<br /> # 函数名有特殊含义:带有 '_handle_' 和 已注册的<br /> # EventType 的函数会被自动认为是event handler<br /> # 当pox.core启动一个事件时,会自动调用这个处理函数。</p> <p># Most event handlers are passed an event object<br /> # as a parameter (though individual Event classes<br /> # can override this behavior by altering their<br /> # _invoke() method).<br /> component = event.component<br /> name = event.name<br /> print "I see you,", name, "!"

3、Event源也可以使用EventMixin库:

<br /> class Source (EventMixin):<br /> # 这个定义告诉revent库,这个源可以启动什么样的event<br /> _eventMixin_events = set([ComponentRegistered])</p> <p>def __init__ (self):<br /> foo()</p> <p>def foo (self):<br /> # 如下步骤启动events<br /> component = "fake_pox_component"<br /> self.raiseEvent(ComponentRegistered(component))</p> <p># In the above invocation, the argument is an<br /> # instance of ComponentRegistered (which is a<br /> # subclass of Event).  The following is funct-<br /> # ionally equivalent, but has the nice property<br /> # that ComponentRegistered is never instantiated<br /> # if there are no listeners.<br /> #self.raiseEvent(ComponentRegistered, component)<br /> # In both cases, "component" is passed to the<br /> # __init__ method for the ComponentRegistered class.</p> <p># The above method invocation will raise an<br /> # exception if an event handler rauses an exception.<br /> # To project yourself from exceptions in handlers,<br /> # see raiseEventNoErrors().