POX事件機制主要分成幾個部分
產生事件(Creat Event)
發布事件(Raising Event)
聆聽事件(Listening to Event)
處理事件(Handling Event)
Listen跟Handling通常是在一起的,聽完就直接動作
事件一定要有對應的處理機制
請不要肇事逃逸
必要匯入
from pox.lib.revent.revent import EventMixin, Event
建立事件 / Creating your Event Type (inherit from Event)
class GameStarted(Event):
def __init__(self, name):
Event.__init__(self)
self.name = name
@property
def player_ready(self):
return self.name == "Baseball"
建立發起事件 / Creating Raising Event (inherit from EventMixin)
class Game(EventMixin):
_eventMixin_events = set([
GameStarted,
])
建立處理事件的函數 / Creating Handling Event Function
def start_game(event):
print "The Game is Started"
建立聆聽及處理事件的類別 / Creating Listening to / Handling Event Class
class GameHandleClass(object):
def __init__(self):
game.addListeners(self) #for listen the event
def _handle_GameStarted(self, event):
print "Game start"
最後當你要發起事件時,需要以下指令 / If you want to raise the event
game = Game()
game.raiseEvent(GameStarted("BaseBall"))
記得要註冊 / Don't forget register you class
core.registerNew(Game) core.registerNew(GameHandleClass)
完整程式碼 / Code
#coding=utf-8
from pox.lib.revent.revent import EventMixin, Event
from pox.core import core
class GameStart(Event):
def __init__(self, name):
Event.__init__(self)
self.name = name
@property
def player_ready(self):
return self.name == "BaseBall"
class GameOver(Event):
def __init__(self, name):
Event.__init__(self)
self.name = name
class Game(EventMixin):
_eventMixin_events = set([
GameStart,
GameOver,
])
class GameHandleClass(object):
def __init__(self):
game.addListeners(self)
def _handle_GameStart(self, event):
print "The Game is already Start"
def _handle_GameOver(self, event):
print "It's Game Over"
game = Game()
def launch():
core.registerNew(Game)
core.registerNew(GameHandleClass)
game.raiseEvent(GameStart("BaseBall"))
game.raiseEvent(GameOver("BaseBall"))
Reference [1] http://www.cnblogs.com/zflibra/p/4051015.html (Available: 2016/01/24)
沒有留言:
張貼留言