一種基於插件的數據模型動態加載的方法
2023-04-29 16:34:16 3
一種基於插件的數據模型動態加載的方法
【專利摘要】一種基於插件的數據模型動態加載的方法,首先定義數據模型節點的描述結構,然後將數據模型節點編譯成動態庫,當TR098服務進程檢測到新插件時,加載新插件,外部進程對步驟S3中加載的數據節點進行添加,修改,刪除,讀取操作時,由TR069服務進程負責執行添加,修改,刪除,讀取節點實例,並調用對應的回調函數執行具體的功能。本發明將數據模型的描述和TR098服務進程分離,將數據模型的描述編譯成動態庫,以插件的形式存在,在TR098服務進程中動態加載插件,從而實現系統的高度可擴展性和維護性。
【專利說明】一種基於插件的數據模型動態加載的方法
【技術領域】
[0001]本發明涉及一種基於插件的數據模型動態加載的方法,尤其涉及一種基於插件的TR098協議中數據模型動態加載的方法。
【背景技術】
[0002]CWMP (CPE WAN Management Protocol,CPE 廣域網管理協議)是由 DSL (DigitalSubscriber's Line,數字用戶線路)論壇發起開發的技術規範之一,編號為TR-069,所以又被稱為TR-069協議。它提供了對下一代網絡中家庭網絡設備進行管理配置的通用框架、消息規範、管理方法和數據模型。
[0003]目前市場上對於TR069數據模型的管理方式大部分都是預先定義數據模型節點的描述文件,然後將數據模型節點描述文件編譯進TR069服務進程。這種方式的實現比較簡單,但如果以後需要增加新的數據模型節點,則必須重新編譯整個TR098服務進程,對於網絡設備來說,就可能需要升級設備的軟體,這就增加了維護成本,不容易擴展。
【發明內容】
[0004]本發明提供一種基於插件的數據模型動態加載的方法,將數據模型的描述編譯成動態庫,在TR098服務進程中動態加載插件,實現了系統的高度可擴展性和維護性。
[0005]為了達到上述目的,本發明提供一種基於插件的數據模型動態加載的方法,該方法包含以下步驟:
步驟S1、定義數據模型節點的描述結構;
所述的數據模型節點的描述結構包含節點路徑,節點名稱,節點屬性,節點參數,節點的回調函數;
步驟S2、將步驟SI中的數據模型節點編譯成動態庫,等待加載;
步驟S3、TR098服務進程檢測新插件,加載新插件;
步驟S4、外部進程對步驟S3中加載的數據節點進行添加,修改,刪除,讀取操作時,由TR069服務進程負責執行添加,修改,刪除,讀取節點實例,並調用對應的回調函數執行具體的功能。
[0006]所述的步驟SI中,所述的回調函數包含:
load Handle:當該節點插件被加載時,執行的回調函數; unload Handle:當該節點插件卸載時候,執行的回調函數; add Handle:添加該節點實例時,執行的回調函數; edit Handle:編輯該節點實例時,執行的回調函數; read Handle:讀取該節點實例時,執行的回調函數; delete Handle:刪除該節點實例時,執行的回調函數。
[0007]所述的數據模型節點的參數描述數組param List包含如下參數:
參數名稱; 參數屬性標誌;
參數類型;
參數的默認值,如果參數沒有顯示設置,那麼參數的值為默認值。
[0008]只有數據模型被實例化時才會調用的回調函數包含以下函數: add Handle:當節點被創建時,調用該函數,在該函數中執行初始化;
edit Handle:當節點被編輯時,調用該函數,該函數是節點功能生效的主要函數,當節點的參數值改變後會調用該函數,在該函數中根據參數值執行具體的功能;
read Handle:當節點被讀取時,調用該函數來更新參數值,對於一些狀態相關的節點尤其需要;
delete Handle:當一個節點被刪除時,調用該函數。
[0009]本發明將數據模型的描述和TR098服務進程分離,將數據模型的描述編譯成動態庫,以插件的形式存在,在TR098服務進程中動態加載插件,從而實現系統的高度可擴展性和維護性。
【專利附圖】
【附圖說明】
[0010]圖1是本發明的流程圖。
【具體實施方式】
[0011]以下根據圖1具體說明本發明的較佳實施例。
[0012]如圖1所示,本發明提供一種基於插件的數據模型動態加載的方法,該方法包含以下步驟:
步驟1、定義數據模型節點的參數描述數組;
所述的節點參數描述數組為param List,該數組中參數的個數為param Num ;
所述的數據模型節點的參數描述數組包含如下參數: name:參數名稱; flag:參數屬性標誌; type:參數類型;
default Vaule:參數的默認值,如果參數沒有顯示設置,那麼參數的值為默認值;
步驟2、編寫節點的回調函數;
插件被加載後,並不會調用步驟2中編寫的回調函數,只有數據模型被實例化時才會調用步驟2中的回調函數;
所述的回調函數包含以下函數:
add Handle:當節點被創建時,調用該函數,在該函數中執行初始化;edit Handle:當節點被編輯時,調用該函數,該函數是節點功能生效的主要函數,當節點的參數值改變後會調用該函數,在該函數中根據參數值執行具體的功能;
read Handle:當節點被讀取時,調用該函數來更新參數值,對於一些狀態相關的節點尤其需要;
delete Handle:當一個節點被刪除時,調用該函數;
步驟3、定義數據模型節點的描述結構; 所述的數據模型節點的描述結構包含節點路徑,節點名稱,節點屬性,節點參數,節點的回調函數,具體如下:
path:描述了節點的路徑; name:描述了節點的名稱; flag:描述了節點的屬性,例如讀寫屬性等; param List:即為步驟I中定義的節點參數描述數組; param Num:是步驟I中節點參數的個數; load Handle:當該節點插件被加載時,執行的回調函數; unload Handle:當該節點插件卸載時候,執行的回調函數; add Handle:添加該節點實例時,執行的回調函數,即步驟2中對應的回調函數; edit Handle:編輯該節點實例時,執行的回調函數,即步驟2中對應的回調函數; read Handle:讀取該節點實例時,執行的回調函數,即步驟2中對應的回調函數; delete Handle:刪除該節點實例時,執行的回調函數,即步驟2中對應的回調函數; 一個文件中可以定義多個節點的描述信息,將步驟3中定義的所有節點的節點描述 結構信息存放到一個數組中,名稱為Object Notes Desc,該數組中的節點個數為Object Notes Num ;
步驟4、將步驟3中的數據模型節點編譯成動態庫,等待加載;
步驟5、TR098服務進程檢測新插件,加載新插件;
由於插件以動態庫形式存在,可以調用相應的接口函數加載插件;
例如Iinux中調用dlopen函數(Linux的庫函數,打開一個動態庫)加載插件,然後根據返回的句柄調用dlsym函數(Linux的庫函數,獲取動態庫中某個符號的地址)獲取名稱為Object Notes Desc的節點描述數組,獲取該數組中描述的節點和參數信息後,便可以加載這些信息;
步驟6、外部進程對步驟5中加載的數據節點進行添加,修改,刪除,讀取等操作時,由TR069服務進程負責執行添加,修改,刪除,讀取節點等實例,並調用對應的回調函數執行具體的功能。
[0013]本發明將數據模型的描述和TR098服務進程分離,將數據模型的描述編譯成動態庫,以插件的形式存在,在TR098服務進程中動態加載插件,從而實現系統的高度可擴展性和維護性。
[0014]儘管本發明的內容已經通過上述優選實施例作了詳細介紹,但應當認識到上述的描述不應被認為是對本發明的限制。在本領域技術人員閱讀了上述內容後,對於本發明的多種修改和替代都將是顯而易見的。因此,本發明的保護範圍應由所附的權利要求來限定。
【權利要求】
1.一種基於插件的數據模型動態加載的方法,其特徵在於,該方法包含以下步驟: 步驟S1、定義數據模型節點的描述結構; 所述的數據模型節點的描述結構包含節點路徑、節點名稱、節點屬性、節點參數和節點的回調函數; 步驟S2、將步驟SI中的數據模型節點編譯成動態庫,等待加載; 步驟S3、TR098服務進程檢測新插件,加載新插件; 步驟S4、外部進程對步驟S3中加載的數據節點進行添加,修改,刪除,讀取操作時,由TR069服務進程負責執行添加,修改,刪除,讀取節點實例,並調用對應的回調函數執行具體的功能。
2.如權利要求1所述的基於插件的數據模型動態加載的方法,其特徵在於,所述的步驟SI中,所述的回調函數包含: load Handle:當該節點插件被加載時,執行的回調函數; unload Handle:當該節點插件卸載時候,執行的回調函數; add Handle:添加該節點實例時,執行的回調函數; edit Handle:編輯該節點實例時,執行的回調函數; read Handle:讀取該節點實例時,執行的回調函數; delete Handle:刪除該節點實例時,執行的回調函數。
3.如權利要求2所述的基於插件的數據模型動態加載的方法,其特徵在於,所述的數據模型節點的參數描述數組param List包含如下參數: 參數名稱; 參數屬性標誌; 參數類型; 參數的默認值,如果參數沒有顯示設置,那麼參數的值為默認值。
4.如權利要求2所述的基於插件的數據模型動態加載的方法,其特徵在於,只有數據模型被實例化時才會調用的回調函數包含以下函數: add Handle:當節點被創建時,調用該函數,在該函數中執行初始化;edit Handle:當節點被編輯時,調用該函數,該函數是節點功能生效的主要函數,當節點的參數值改變後會調用該函數,在該函數中根據參數值執行具體的功能; read Handle:當節點被讀取時,調用該函數來更新參數值,對於一些狀態相關的節點尤其需要; delete Handle:當一個節點被刪除時,調用該函數。
【文檔編號】G06F9/445GK103761136SQ201410063854
【公開日】2014年4月30日 申請日期:2014年2月25日 優先權日:2014年2月25日
【發明者】匡昌勝 申請人:上海斐訊數據通信技術有限公司