專利名稱:一種消息解析方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電信網(wǎng)絡(luò)消息交互技術(shù),具體涉及一種消息解析方法。
技術(shù)背景電信網(wǎng)絡(luò)是由各種電信設(shè)備即網(wǎng)元組成的典型異質(zhì)網(wǎng)絡(luò),為了保證電信網(wǎng) 絡(luò)的正常運(yùn)行,組成電信網(wǎng)絡(luò)的網(wǎng)元之間、電信網(wǎng)絡(luò)管理系統(tǒng)與網(wǎng)元之間、以 及本地維護(hù)終端和網(wǎng)元之間都需要通過消息交互來獲取足夠的信息資源。目前, 為了實(shí)現(xiàn)網(wǎng)元之間、電信網(wǎng)絡(luò)管理系統(tǒng)與網(wǎng)元之間、以及本地維護(hù)終端和網(wǎng)元 之間的消息交互,在電信網(wǎng)絡(luò)管理系統(tǒng)程序中針對(duì)不同的消息定義不同的數(shù)據(jù)結(jié)構(gòu),例如,可以定義一條消息的數(shù)據(jù)結(jié)構(gòu)為 struct tagMessagelWORD wFieldl; DO WORD dwField2; BYTE byField3;也可以定義另外一條消息的數(shù)據(jù)結(jié)構(gòu)為 struct tagMessage2WORD wField4; BYTE byField5;其中,wFieldl、 dwField2、 byField3、 wField4及byField5為消息中的字段。 網(wǎng)元/電信網(wǎng)絡(luò)管理系統(tǒng)/本地維護(hù)終端收到消息后,首先把消息的具體內(nèi)容 拷貝到對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)中,然后通過處理包含消息具體內(nèi)容的數(shù)據(jù)結(jié)構(gòu)來逐個(gè)解析消息中的字^a。隨著電信事業(yè)的飛速發(fā)展,網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大,網(wǎng)絡(luò)功能不斷增多,網(wǎng)元 之間、電信網(wǎng)絡(luò)管理系統(tǒng)與網(wǎng)元之間、以及本地維護(hù)終端和網(wǎng)元之間交互所需 的消息也不斷增多,而現(xiàn)有的消息解析方法中,由于消息的格式多種多樣,且 對(duì)應(yīng)著不同的接口和數(shù)據(jù)結(jié)構(gòu),因此,消息代碼和接口的擴(kuò)展性較差,每次修 改消息接口 ,都需要大規(guī)模地重新編寫或者修改電信網(wǎng)絡(luò)管理系統(tǒng)的程序代碼, 極大地增大了編程人員的工作量。發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種消息解析方法,能夠提高消息 代碼和接口的可擴(kuò)展性,并且在增加消息時(shí),減小編程人員的工作量,節(jié)約系 統(tǒng)資源。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 一種消息解析方法,設(shè)置消息模型文件,該方法包括a、 獲取消息模型文件中所有消息的描述信息;b、 接收到消息后,在步驟a所述所有消息的描述信息中查找所接收消息的 描述信息,根據(jù)所述描述信息解析所述消息。所述消息模型文件包括網(wǎng)元測(cè)量數(shù)據(jù)節(jié)點(diǎn)、消息節(jié)點(diǎn)和字段節(jié)點(diǎn),其中, 網(wǎng)元測(cè)量數(shù)據(jù)節(jié)點(diǎn)表示測(cè)量任務(wù)類型;消息節(jié)點(diǎn)進(jìn)一步包括消息ID和消息類 型;字段節(jié)點(diǎn)進(jìn)一步包括字段類型、字段在消息中的具體位置、字段的數(shù)據(jù) 類型、字段的最大值和最小值。步驟a所獲取的描述信息按照固定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述,并以消息ID為索 引,所述數(shù)據(jù)結(jié)構(gòu)包括字段索引、字段類型、數(shù)據(jù)類型、字段最小值、字段 最大值和字段子節(jié)點(diǎn)的個(gè)數(shù)。步驟b所述接收到的消息至少攜帶有消息ID。步驟b所述查找所接收消息的描述信息,具體為才艮據(jù)所述消息攜帶的消 息ID確定所述消息的描述信息。 步驟c所述解析消息為Cl、判斷字段索引中的第一個(gè)字段是否需要解析,若需要,根據(jù)步驟b獲取的描述信息,解析所述字段后執(zhí)行步驟c2;否則,才丸行步驟c3;c2、判斷是否遍歷字段索引中的所有字段,如果是,結(jié)束當(dāng)前處理;否則, 執(zhí)行步驟c3;c3、判斷下一個(gè)字段是否需要解析,如果是,根據(jù)步驟b獲取的描述信息, 解析所述字4殳后,返回步驟c2;否則,直接返回步驟c2。步驟b接收到消息后,進(jìn)一步包括判斷所述收到的消息是否合法,不合 法時(shí)結(jié)束當(dāng)前處理。本發(fā)明提出的消息解析方法,設(shè)置消息模型文件,電信網(wǎng)絡(luò)管理系統(tǒng)程序 啟動(dòng)后,通過加載消息模型文件獲取所有消息的描述信息,消息接收端收到消 息后,通過查詢所述消息對(duì)應(yīng)的描述信息,對(duì)消息進(jìn)行解析。由于所有消息的 描述信息均以固定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述,所以,編程人員不用針對(duì)每種數(shù)據(jù)結(jié) 構(gòu)編寫消息解析代碼,并且,電信網(wǎng)絡(luò)管理系統(tǒng)程序每次啟動(dòng)后,都會(huì)重新加 載消息模型文件,所以,增加消息時(shí),編程人員只需要對(duì)消息模型文件進(jìn)行相 應(yīng)修改。本發(fā)明提出的消息解析方法提高了消息代碼和接口的可擴(kuò)展性,并減 小了編程人員的工作量,節(jié)約了系統(tǒng)資源。
圖1為本發(fā)明消息解析方法流程圖。
具體實(shí)施方式
本發(fā)明的基本思想是設(shè)置消息模型文件,電信網(wǎng)絡(luò)管理系統(tǒng)程序啟動(dòng)后, 通過加載消息模型文件獲取所有消息的描述信息,消息接收端收到消息后,通 過查詢所述消息對(duì)應(yīng)的描述信息,對(duì)消息進(jìn)行解析。下面結(jié)合具體實(shí)施例及附 圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。性能測(cè)量是電信網(wǎng)絡(luò)管理系統(tǒng)的主要組成部分之一,其主要用于沖艮據(jù)網(wǎng)元 對(duì)象支持的測(cè)量類型提供能反映網(wǎng)元性能指標(biāo)的實(shí)時(shí)監(jiān)控和性能數(shù)據(jù)報(bào)表,使維護(hù)人員能夠及時(shí)掌控系統(tǒng)運(yùn)行情況,以便及時(shí)分析并排除網(wǎng)元故障,從而為 無線網(wǎng)絡(luò)的運(yùn)行及維護(hù)提供支持。為了實(shí)現(xiàn)本發(fā)明的消息解析方法,首先需要將所有消息按照一定^f各式描述在一個(gè)文件中,即根據(jù)每條消息包含的具體信息,如消息ID、消息號(hào)、消息類 型、消息中包括的字段信息等,來定義消息模型并記錄在消息模型文件中,其 中,消息中包括的字段信息進(jìn)一步包括字段類型、字段索引、字段值大小范圍 等。在消息模型文件中,性能測(cè)量任務(wù)的消息模型可以定義如下 <MetaData><msg msgid="" type="" ><field type="" msgbodyidx="" datatype="" min="" max=""> < /field></msg></MetaData>其中,網(wǎng)元測(cè)量數(shù)據(jù)節(jié)點(diǎn)MetaData用于區(qū)分具體的測(cè)量任務(wù)類型,如基站 測(cè)量、小區(qū)測(cè)量等;msgid和type屬于消息節(jié)點(diǎn),msgid表示消息ID, type表 示消息類型,如啟動(dòng)請(qǐng)求消息、停止請(qǐng)求消息、請(qǐng)求回應(yīng)消息、停止請(qǐng)求回應(yīng) 消息和上報(bào)消息等;消息的具體內(nèi)容是一個(gè)個(gè)的字段,所以,在字段節(jié)點(diǎn)field 中,field type表示字段類型,msgbodyidx表示字段在消息中的具體位置,datatype 表示字段的數(shù)據(jù)類型,min和max分別表示字段的最大值和最小值。定義消息 模型時(shí),還可以根據(jù)實(shí)際需要增加字段的附加信息,例如,增加相應(yīng)的計(jì)算公 式及顯示格式等屬性,以便對(duì)字段進(jìn)行相應(yīng)的后處理和顯示。圖1為本發(fā)明消息解析方法流程圖,如圖l所示,本發(fā)明消息解析方法主 要包括以下步驟步驟ll:電信網(wǎng)絡(luò)管理系統(tǒng)程序啟動(dòng)后,加載消息模型文件,以獲取所有消息的描述信息。針對(duì)定義的消息模型文件,系統(tǒng)程序加載消息模型文件時(shí),需要按照固定 的數(shù)據(jù)結(jié)構(gòu)對(duì)消息^^型文件攜帶的所有消息的描述信息進(jìn)行描述,并且以消息ID為索引,例如,可以定義固定的數(shù)據(jù)結(jié)構(gòu)為 struct tagFieldlnfoWORD wMsglndex; WORD wFieldType; char chDataType; int iMinValue; int iMaxValue; WORD wCh羅um;};其中,wMsglndex為字段索引,即表示字段在消息中的順序;wFieldType 表示字段類型;chDataType表示數(shù)據(jù)類型;iMinValue和iMaxValue分別表示字 段最小值和最大值;wChildNum表示字段子節(jié)點(diǎn)的個(gè)數(shù)。這里,電信網(wǎng)絡(luò)管理系統(tǒng)程序加載消息模型文件后,還可以進(jìn)一步根據(jù)具 體的消息解析要求對(duì)消息的描述信息進(jìn)行預(yù)處理,例如,計(jì)算消息的數(shù)據(jù)長(zhǎng)度 以便用于長(zhǎng)度判斷、獲取某些字段的默認(rèn)值以便用于界面顯示等。步驟12:消息接收端收到消息A。這里,消息A至少需要攜帶消息ID。對(duì)于多個(gè)任務(wù)同時(shí)運(yùn)行的情況,消息 ID用于區(qū)分不同任務(wù)的不同消息。消息類型、字段類型、字段索引、字段值最小值和字段最大值可以根據(jù)實(shí) 際情況有選擇性地?cái)y帶。本實(shí)施例中,消息A攜帶消息類型、字段類型、字段 索引、字段值最小值和字段最大值。步驟13:消息接收端判斷消息A是否合法,如果是,執(zhí)行步驟14;否貝'J, 執(zhí)行步驟19。這里,可以通過消息號(hào)或消息類型等判斷消息A是否合法。例如,利用消息號(hào)進(jìn)行判斷,消息^接收端發(fā)送消息號(hào)為1的消息后,期望收到消息號(hào)為2的 消息時(shí),如果收到消息號(hào)為3的消息,那么,判定收到的消息不合法。利用消 息類型進(jìn)行判斷時(shí),如果消息類型對(duì)應(yīng)的消息長(zhǎng)度不符合消息接收端要求的消 息長(zhǎng)度,那么,判定收到的消息不合法。步驟14:消息接收端根據(jù)消息A的消息ID,獲取消息A對(duì)應(yīng)的描述信息。這里,消息接收端根據(jù)消息A攜帶的消息ID,查找步驟ll所述所有消息 的描述信息,從而獲取消息A對(duì)應(yīng)的描述信息。步驟15:消息接收端判斷字段索引中的第一個(gè)字段是否需要解析,如果是, 執(zhí)行步驟16;否則,執(zhí)行步驟17。這里,工作人員可以根據(jù)實(shí)際需要預(yù)先設(shè)置消息中需要解析的字段,以節(jié) 約系統(tǒng)資源。步驟16:根據(jù)步驟14獲取的描述信息,解析所述字^更。這里,如果消息A的描述信息中,指示字段索引中的第一個(gè)字段長(zhǎng)度為一 個(gè)字,則系統(tǒng)程序按從前至后的順序獲取消息A所攜帶二進(jìn)制碼流中長(zhǎng)度為一 個(gè)字的二進(jìn)制碼,并放入新的緩沖區(qū),該字段解析完成。步驟17:判斷是否遍歷字段索引中的所有字段,如果是,執(zhí)行步驟19,流 程結(jié)束;否則,執(zhí)行步驟18。步驟18:繼續(xù)判斷字段索引中的下一個(gè)字段是否需要解析,如果是,返回 步驟16;否則,返回步驟17。這里,對(duì)下一個(gè)字段進(jìn)行判斷是通過偏移緩沖區(qū)指針及字段索引實(shí)現(xiàn)的。步驟19:結(jié)束當(dāng)前流程。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1. 一種消息解析方法,其特征在于,設(shè)置消息模型文件,該方法包括a、獲取消息模型文件中所有消息的描述信息;b、接收到消息后,在步驟a所述所有消息的描述信息中查找所接收消息的描述信息,根據(jù)所述描述信息解析所述消息。
2、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述消息模型文件包括網(wǎng) 元測(cè)量數(shù)據(jù)節(jié)點(diǎn)、消息節(jié)點(diǎn)和字段節(jié)點(diǎn),其中,網(wǎng)元測(cè)量數(shù)據(jù)節(jié)點(diǎn)表示測(cè)量任 務(wù)類型;消息節(jié)點(diǎn)進(jìn)一步包括消息ID和消息類型;字段節(jié)點(diǎn)進(jìn)一步包括字段 類型、字段在消息中的具體位置、字段的數(shù)據(jù)類型、字段的最大值和最小值。
3、 根據(jù)權(quán)利要求l所述的方法,其特征在于,步驟a所獲取的描述信息按 照固定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述,并以消息ID為索引,所述數(shù)據(jù)結(jié)構(gòu)包括字段索 引、字段類型、數(shù)據(jù)類型、字段最小值、字段最大值和字段子節(jié)點(diǎn)的個(gè)數(shù)。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟b所述接收到的消息至 少攜帶有消息ID。
5、 根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟b所述查找所接收消息 的描述信息,具體為根據(jù)所述消息攜帶的消息ID確定所述消息的描述信息。
6、 根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟c所述解析消息為 cl、判斷字段索引中的第一個(gè)字段是否需要解析,若需要,根據(jù)步驟b獲取的描述信息,解析所述字段后執(zhí)行步驟c2;否則,執(zhí)行步驟c3;c2、判斷是否遍歷字段索引中的所有字段,如果是,結(jié)束當(dāng)前處理;否貝'J, 執(zhí)行步驟c3;c3、判斷下一個(gè)字段是否需要解析,如果是,根據(jù)步驟b獲取的描述信息, 解析所述字^a后,返回步驟c2;否則,直接返回步驟c2。
7、 根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟b接收到消息后,進(jìn)一 步包括判斷所述收到的消息是否合法,不合法時(shí)結(jié)束當(dāng)前處理。
全文摘要
本發(fā)明公開了一種消息解析方法,該方法設(shè)置消息模型文件,包括獲取消息模型文件中所有消息的描述信息;接收到消息后,查找所接收消息的描述信息,并根據(jù)所述描述信息解析所述消息。采用本發(fā)明提出的消息解析方法,由于所有消息的描述信息均以固定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述,所以,編程人員不用針對(duì)每種消息結(jié)構(gòu)編寫消息解析代碼,并且,增加或改變消息時(shí),編程人員只需要對(duì)消息模型文件進(jìn)行相應(yīng)修改,所以,提高了消息代碼和接口的可擴(kuò)展性,并減小了編程人員的工作量,節(jié)約了系統(tǒng)資源。
文檔編號(hào)H04L12/26GK101272376SQ20081009613
公開日2008年9月24日 申請(qǐng)日期2008年5月6日 優(yōu)先權(quán)日2008年5月6日
發(fā)明者濤 田, 馬運(yùn)勇 申請(qǐng)人:中興通訊股份有限公司