2015年12月13日 星期日

[POX] 建立Class與註冊

本篇是在記錄要建立Class時
可以將其註冊到POX的Core中
後續調用就比較方便了



建立自己的Class

註冊的方式有兩種,我們建立自己的Class實現自定義功能時,使用這兩種方法將Class註冊到Core裡面,Core主要是統整各個Class,以上兩種函數都是註冊的方法,則一即可

匯入函數: from pox.core import core

core.register() 

core.register("class註冊到Core中用的名字",class的實例)

core.register()例子

#coding=utf-8
#!/usr/bin/python
from pox.core import core

class MyClass(object):
    def __init__(self, an_arg): #呼叫函數後基本都會執行這個部分an_arg會收到傳來的參數
        self.arg = an_arg 
        print "MyClass instance registered:", self.arg

    def message(self): 
        print "MyClass with arg:", self.arg


def launch():
    component = MyClass("Hello world!") #新建物件,傳參數
    core.register("nameofclass", component) #註冊這個class的名字是nameofclass,然後調用
    core.nameofclass.message() #註冊好之後,我們試著調用class裡面的函數

core.registerNew()

core.registerNew("class的名字",傳到Class的參數)

需要注意的是使用core.registerNew,如果再class裡面沒有給予名字,則core會直接把Class的名字註冊進去

core.registerNew()例子

#coding=utf-8
#!/usr/bin/python
from pox.core import core

class MyClass(object):
    _core_name = "square"  #可以在class裡面以_core_name建立註冊進Core的名稱,這邊沒放就會直接註冊class名稱

    def __init__(self, an_arg):
        self.arg = an_arg 
        print "MyClass instance registered:", self.arg

    def message(self):
        print "MyClass with arg:", self.arg

    core.call_when_ready(message, 'openflow', 'openflow_discovery') 
    #當openflow與openflow_discovery class註冊後,開始message函數

def launch():
    core.registerNew(MyClass, "HelloWorld") #該Class,傳入的參數
    core.nameofclass.message() #註冊完後就可以用Core的方式調用函數

沒有留言:

張貼留言