l2_learning.py檔案定義了兩個類:learningswitch、l2_learning,learningswitch類中的handle_packetin
函式定義了交換機自學習的能力,
l2_learning
類實現了交換機一旦連線了就使其成為乙個自學習交換機。啟動pox時,元件中的launch
函式會執行,下面看看
l2_learning
中launch
函式:
launch
函式中最重要的一句話:core.registernew(l2.learning,str_to_bool(transparent))
registernew函式呼叫了register函式,register函式中會觸發componentregistered事件,
也就是說core.registernew(l2.learning,str_to_bool(transparent))這句**會使得core觸發乙個事件:componentregistered事件。下面給出**:
core觸發了乙個事件,那麼事件處理函式在**?事件是怎樣繫結到乙個handler函式的?
每個元件中的初始化函式_init_中會有listento函式或者addlistener函式:
istento函式和addlistener函式定義在pox
/pox
/lib
/revent
/revent.py中:
listento函式從注釋上可以看出功能:將self上的所有的handler函式繫結到source產生的events上。
而addlistener函式是將sink(監聽者)的所有handler函式繫結到self上(ps:self是當前物件)。
具體怎麼繫結可以看autobindevents函式:
現在,我們大致知道了事件會和handler函式繫結,下面我們來找找事件componentregistered繫結了哪個handler函式:見pox
就這樣,我們的l2_learning.py就註冊到了core中.......
pox元件介紹
pox主程式 pox.py 的引數 verbose display extra information especially useful for debugging startup problems no openflow do not automatically start listening ...
Qt事件系統
在qt中,事件是繼承了虛擬類qevent 的物件,它代表了程式所發生的事情或者程式需要知道的乙個外部活動的結果。事件可以被任意 qobject 子類的例項接收和處理,是與widgets 當發生乙個事件,qt通過構造乙個適當的 qevent 子類的例項來建立事件物件來代表它,並通過呼叫vevent 函...
Qt 事件系統
2011 08 14 02 05 1529人閱讀收藏 qtevents function system qt是事件驅動的,程式每個動作都是由某個事件所觸發。qt事件的型別很多,我們可以通過檢視qt的 manual中的event system 和 qevent 來獲得各個事件的詳細資訊。posted ...