国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法

      文檔序號:6538682閱讀:509來源:國知局
      一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法
      【專利摘要】一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法,首先定義數(shù)據(jù)模型節(jié)點的描述結(jié)構(gòu),然后將數(shù)據(jù)模型節(jié)點編譯成動態(tài)庫,當(dāng)TR098服務(wù)進程檢測到新插件時,加載新插件,外部進程對步驟S3中加載的數(shù)據(jù)節(jié)點進行添加,修改,刪除,讀取操作時,由TR069服務(wù)進程負責(zé)執(zhí)行添加,修改,刪除,讀取節(jié)點實例,并調(diào)用對應(yīng)的回調(diào)函數(shù)執(zhí)行具體的功能。本發(fā)明將數(shù)據(jù)模型的描述和TR098服務(wù)進程分離,將數(shù)據(jù)模型的描述編譯成動態(tài)庫,以插件的形式存在,在TR098服務(wù)進程中動態(tài)加載插件,從而實現(xiàn)系統(tǒng)的高度可擴展性和維護性。
      【專利說明】一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法,尤其涉及一種基于插件的TR098協(xié)議中數(shù)據(jù)模型動態(tài)加載的方法。
      【背景技術(shù)】
      [0002]CWMP (CPE WAN Management Protocol,CPE 廣域網(wǎng)管理協(xié)議)是由 DSL (DigitalSubscriber's Line,數(shù)字用戶線路)論壇發(fā)起開發(fā)的技術(shù)規(guī)范之一,編號為TR-069,所以又被稱為TR-069協(xié)議。它提供了對下一代網(wǎng)絡(luò)中家庭網(wǎng)絡(luò)設(shè)備進行管理配置的通用框架、消息規(guī)范、管理方法和數(shù)據(jù)模型。
      [0003]目前市場上對于TR069數(shù)據(jù)模型的管理方式大部分都是預(yù)先定義數(shù)據(jù)模型節(jié)點的描述文件,然后將數(shù)據(jù)模型節(jié)點描述文件編譯進TR069服務(wù)進程。這種方式的實現(xiàn)比較簡單,但如果以后需要增加新的數(shù)據(jù)模型節(jié)點,則必須重新編譯整個TR098服務(wù)進程,對于網(wǎng)絡(luò)設(shè)備來說,就可能需要升級設(shè)備的軟件,這就增加了維護成本,不容易擴展。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明提供一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法,將數(shù)據(jù)模型的描述編譯成動態(tài)庫,在TR098服務(wù)進程中動態(tài)加載插件,實現(xiàn)了系統(tǒng)的高度可擴展性和維護性。
      [0005]為了達到上述目的,本發(fā)明提供一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法,該方法包含以下步驟:
      步驟S1、定義數(shù)據(jù)模型節(jié)點的描述結(jié)構(gòu);
      所述的數(shù)據(jù)模型節(jié)點的描述結(jié)構(gòu)包含節(jié)點路徑,節(jié)點名稱,節(jié)點屬性,節(jié)點參數(shù),節(jié)點的回調(diào)函數(shù);
      步驟S2、將步驟SI中的數(shù)據(jù)模型節(jié)點編譯成動態(tài)庫,等待加載;
      步驟S3、TR098服務(wù)進程檢測新插件,加載新插件;
      步驟S4、外部進程對步驟S3中加載的數(shù)據(jù)節(jié)點進行添加,修改,刪除,讀取操作時,由TR069服務(wù)進程負責(zé)執(zhí)行添加,修改,刪除,讀取節(jié)點實例,并調(diào)用對應(yīng)的回調(diào)函數(shù)執(zhí)行具體的功能。
      [0006]所述的步驟SI中,所述的回調(diào)函數(shù)包含:
      load Handle:當(dāng)該節(jié)點插件被加載時,執(zhí)行的回調(diào)函數(shù); unload Handle:當(dāng)該節(jié)點插件卸載時候,執(zhí)行的回調(diào)函數(shù); add Handle:添加該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù); edit Handle:編輯該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù); read Handle:讀取該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù); delete Handle:刪除該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù)。
      [0007]所述的數(shù)據(jù)模型節(jié)點的參數(shù)描述數(shù)組param List包含如下參數(shù):
      參數(shù)名稱; 參數(shù)屬性標(biāo)志;
      參數(shù)類型;
      參數(shù)的默認值,如果參數(shù)沒有顯示設(shè)置,那么參數(shù)的值為默認值。
      [0008]只有數(shù)據(jù)模型被實例化時才會調(diào)用的回調(diào)函數(shù)包含以下函數(shù): add Handle:當(dāng)節(jié)點被創(chuàng)建時,調(diào)用該函數(shù),在該函數(shù)中執(zhí)行初始化;
      edit Handle:當(dāng)節(jié)點被編輯時,調(diào)用該函數(shù),該函數(shù)是節(jié)點功能生效的主要函數(shù),當(dāng)節(jié)點的參數(shù)值改變后會調(diào)用該函數(shù),在該函數(shù)中根據(jù)參數(shù)值執(zhí)行具體的功能;
      read Handle:當(dāng)節(jié)點被讀取時,調(diào)用該函數(shù)來更新參數(shù)值,對于一些狀態(tài)相關(guān)的節(jié)點尤其需要;
      delete Handle:當(dāng)一個節(jié)點被刪除時,調(diào)用該函數(shù)。
      [0009]本發(fā)明將數(shù)據(jù)模型的描述和TR098服務(wù)進程分離,將數(shù)據(jù)模型的描述編譯成動態(tài)庫,以插件的形式存在,在TR098服務(wù)進程中動態(tài)加載插件,從而實現(xiàn)系統(tǒng)的高度可擴展性和維護性。
      【專利附圖】

      【附圖說明】
      [0010]圖1是本發(fā)明的流程圖。
      【具體實施方式】
      [0011]以下根據(jù)圖1具體說明本發(fā)明的較佳實施例。
      [0012]如圖1所示,本發(fā)明提供一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法,該方法包含以下步驟:
      步驟1、定義數(shù)據(jù)模型節(jié)點的參數(shù)描述數(shù)組;
      所述的節(jié)點參數(shù)描述數(shù)組為param List,該數(shù)組中參數(shù)的個數(shù)為param Num ;
      所述的數(shù)據(jù)模型節(jié)點的參數(shù)描述數(shù)組包含如下參數(shù): name:參數(shù)名稱; flag:參數(shù)屬性標(biāo)志; type:參數(shù)類型;
      default Vaule:參數(shù)的默認值,如果參數(shù)沒有顯示設(shè)置,那么參數(shù)的值為默認值;
      步驟2、編寫節(jié)點的回調(diào)函數(shù);
      插件被加載后,并不會調(diào)用步驟2中編寫的回調(diào)函數(shù),只有數(shù)據(jù)模型被實例化時才會調(diào)用步驟2中的回調(diào)函數(shù);
      所述的回調(diào)函數(shù)包含以下函數(shù):
      add Handle:當(dāng)節(jié)點被創(chuàng)建時,調(diào)用該函數(shù),在該函數(shù)中執(zhí)行初始化;edit Handle:當(dāng)節(jié)點被編輯時,調(diào)用該函數(shù),該函數(shù)是節(jié)點功能生效的主要函數(shù),當(dāng)節(jié)點的參數(shù)值改變后會調(diào)用該函數(shù),在該函數(shù)中根據(jù)參數(shù)值執(zhí)行具體的功能;
      read Handle:當(dāng)節(jié)點被讀取時,調(diào)用該函數(shù)來更新參數(shù)值,對于一些狀態(tài)相關(guān)的節(jié)點尤其需要;
      delete Handle:當(dāng)一個節(jié)點被刪除時,調(diào)用該函數(shù);
      步驟3、定義數(shù)據(jù)模型節(jié)點的描述結(jié)構(gòu); 所述的數(shù)據(jù)模型節(jié)點的描述結(jié)構(gòu)包含節(jié)點路徑,節(jié)點名稱,節(jié)點屬性,節(jié)點參數(shù),節(jié)點的回調(diào)函數(shù),具體如下:
      path:描述了節(jié)點的路徑; name:描述了節(jié)點的名稱; flag:描述了節(jié)點的屬性,例如讀寫屬性等; param List:即為步驟I中定義的節(jié)點參數(shù)描述數(shù)組; param Num:是步驟I中節(jié)點參數(shù)的個數(shù); load Handle:當(dāng)該節(jié)點插件被加載時,執(zhí)行的回調(diào)函數(shù); unload Handle:當(dāng)該節(jié)點插件卸載時候,執(zhí)行的回調(diào)函數(shù); add Handle:添加該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù),即步驟2中對應(yīng)的回調(diào)函數(shù); edit Handle:編輯該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù),即步驟2中對應(yīng)的回調(diào)函數(shù); read Handle:讀取該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù),即步驟2中對應(yīng)的回調(diào)函數(shù); delete Handle:刪除該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù),即步驟2中對應(yīng)的回調(diào)函數(shù); 一個文件中可以定義多個節(jié)點的描述信息,將步驟3中定義的所有節(jié)點的節(jié)點描述 結(jié)構(gòu)信息存放到一個數(shù)組中,名稱為Object Notes Desc,該數(shù)組中的節(jié)點個數(shù)為Object Notes Num ;
      步驟4、將步驟3中的數(shù)據(jù)模型節(jié)點編譯成動態(tài)庫,等待加載;
      步驟5、TR098服務(wù)進程檢測新插件,加載新插件;
      由于插件以動態(tài)庫形式存在,可以調(diào)用相應(yīng)的接口函數(shù)加載插件;
      例如Iinux中調(diào)用dlopen函數(shù)(Linux的庫函數(shù),打開一個動態(tài)庫)加載插件,然后根據(jù)返回的句柄調(diào)用dlsym函數(shù)(Linux的庫函數(shù),獲取動態(tài)庫中某個符號的地址)獲取名稱為Object Notes Desc的節(jié)點描述數(shù)組,獲取該數(shù)組中描述的節(jié)點和參數(shù)信息后,便可以加載這些信息;
      步驟6、外部進程對步驟5中加載的數(shù)據(jù)節(jié)點進行添加,修改,刪除,讀取等操作時,由TR069服務(wù)進程負責(zé)執(zhí)行添加,修改,刪除,讀取節(jié)點等實例,并調(diào)用對應(yīng)的回調(diào)函數(shù)執(zhí)行具體的功能。
      [0013]本發(fā)明將數(shù)據(jù)模型的描述和TR098服務(wù)進程分離,將數(shù)據(jù)模型的描述編譯成動態(tài)庫,以插件的形式存在,在TR098服務(wù)進程中動態(tài)加載插件,從而實現(xiàn)系統(tǒng)的高度可擴展性和維護性。
      [0014]盡管本發(fā)明的內(nèi)容已經(jīng)通過上述優(yōu)選實施例作了詳細介紹,但應(yīng)當(dāng)認識到上述的描述不應(yīng)被認為是對本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對于本發(fā)明的多種修改和替代都將是顯而易見的。因此,本發(fā)明的保護范圍應(yīng)由所附的權(quán)利要求來限定。
      【權(quán)利要求】
      1.一種基于插件的數(shù)據(jù)模型動態(tài)加載的方法,其特征在于,該方法包含以下步驟: 步驟S1、定義數(shù)據(jù)模型節(jié)點的描述結(jié)構(gòu); 所述的數(shù)據(jù)模型節(jié)點的描述結(jié)構(gòu)包含節(jié)點路徑、節(jié)點名稱、節(jié)點屬性、節(jié)點參數(shù)和節(jié)點的回調(diào)函數(shù); 步驟S2、將步驟SI中的數(shù)據(jù)模型節(jié)點編譯成動態(tài)庫,等待加載; 步驟S3、TR098服務(wù)進程檢測新插件,加載新插件; 步驟S4、外部進程對步驟S3中加載的數(shù)據(jù)節(jié)點進行添加,修改,刪除,讀取操作時,由TR069服務(wù)進程負責(zé)執(zhí)行添加,修改,刪除,讀取節(jié)點實例,并調(diào)用對應(yīng)的回調(diào)函數(shù)執(zhí)行具體的功能。
      2.如權(quán)利要求1所述的基于插件的數(shù)據(jù)模型動態(tài)加載的方法,其特征在于,所述的步驟SI中,所述的回調(diào)函數(shù)包含: load Handle:當(dāng)該節(jié)點插件被加載時,執(zhí)行的回調(diào)函數(shù); unload Handle:當(dāng)該節(jié)點插件卸載時候,執(zhí)行的回調(diào)函數(shù); add Handle:添加該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù); edit Handle:編輯該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù); read Handle:讀取該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù); delete Handle:刪除該節(jié)點實例時,執(zhí)行的回調(diào)函數(shù)。
      3.如權(quán)利要求2所述的基于插件的數(shù)據(jù)模型動態(tài)加載的方法,其特征在于,所述的數(shù)據(jù)模型節(jié)點的參數(shù)描述數(shù)組param List包含如下參數(shù): 參數(shù)名稱; 參數(shù)屬性標(biāo)志; 參數(shù)類型; 參數(shù)的默認值,如果參數(shù)沒有顯示設(shè)置,那么參數(shù)的值為默認值。
      4.如權(quán)利要求2所述的基于插件的數(shù)據(jù)模型動態(tài)加載的方法,其特征在于,只有數(shù)據(jù)模型被實例化時才會調(diào)用的回調(diào)函數(shù)包含以下函數(shù): add Handle:當(dāng)節(jié)點被創(chuàng)建時,調(diào)用該函數(shù),在該函數(shù)中執(zhí)行初始化;edit Handle:當(dāng)節(jié)點被編輯時,調(diào)用該函數(shù),該函數(shù)是節(jié)點功能生效的主要函數(shù),當(dāng)節(jié)點的參數(shù)值改變后會調(diào)用該函數(shù),在該函數(shù)中根據(jù)參數(shù)值執(zhí)行具體的功能; read Handle:當(dāng)節(jié)點被讀取時,調(diào)用該函數(shù)來更新參數(shù)值,對于一些狀態(tài)相關(guān)的節(jié)點尤其需要; delete Handle:當(dāng)一個節(jié)點被刪除時,調(diào)用該函數(shù)。
      【文檔編號】G06F9/445GK103761136SQ201410063854
      【公開日】2014年4月30日 申請日期:2014年2月25日 優(yōu)先權(quán)日:2014年2月25日
      【發(fā)明者】匡昌勝 申請人:上海斐訊數(shù)據(jù)通信技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1