專利名稱::一種電子服務指南數(shù)據(jù)的序列化及反序列化方法
技術(shù)領域:
:本發(fā)明涉及一種數(shù)據(jù)的序列化及反序列化方法,尤其是一種DVB-H(DigitalVideoBroadcasting-Handheld,手持數(shù)字電視廣播)網(wǎng)絡中的ESG(ElectronicServiceGuide,電子服務指南)數(shù)據(jù)的序列化及反序列化方法。
背景技術(shù):
:隨著3G技術(shù)在全球范圍內(nèi)的普及,越來越多的用戶開始通過3G網(wǎng)絡觀看手機電視。在目前手機電視的主流標準中,DVB-H是歐洲數(shù)字電視廣播標準化團體組織為通過地面數(shù)字廣播網(wǎng)絡向便攜/手持終端提供多媒體業(yè)務所制定的傳輸標準,其網(wǎng)絡建設費用小、單向廣播、不占用移動通訊網(wǎng)絡的雙向帶寬,可以使用戶以極低的價格隨時、隨地、隨意地觀看電視,有著廣泛的商用前景。用戶在使用支持DVB-H的手持設備觀看電視的過程中,首先要將ESG數(shù)據(jù)接收下來顯示為節(jié)目清單,然后才能播放。DVB-H發(fā)射塔以比較慢的速率發(fā)射ESG數(shù)據(jù)包,由于ESG數(shù)據(jù)的特殊性,導致用戶第一次開機后必須長時間等待手持設備接收數(shù)據(jù),尤其是當ESG數(shù)據(jù)量很大內(nèi)敘艮多時,用戶等待的時間更長。若是用戶在一段時間內(nèi)較頻繁地重啟手持設備接收電i見,每次用戶就必須等待很長的時間來接收ESG數(shù)據(jù)并顯示為節(jié)目清單供其播放,這對用戶來說是無法忍受的,同時,也使手持設備消耗掉過多的終端電池能量。針對上述問題,可以通過對ESG數(shù)據(jù)的序列化及反序列化來縮短用戶的等待時間。即在用戶第一次接收解析完ESG數(shù)據(jù)后將這些ESG數(shù)據(jù)序列化保存到終端設備的本地文件中,當用戶再次啟動終端i殳備觀看電視時只需要從本地文件中將ESG數(shù)據(jù)^jf列化恢復到內(nèi)存中,以顯示為節(jié)目清單供播放使用。ESG數(shù)據(jù)為基本結(jié)構(gòu)體類型數(shù)據(jù),目前,還未有相應的序列化及反序列化方法來實現(xiàn)ESG數(shù)據(jù)的快速保存與恢復。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種ESG數(shù)據(jù)的序列化;s^序列化方法,實現(xiàn)了ESG數(shù)據(jù)的快速保存與恢復。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種ESG數(shù)據(jù)的序列化方法,包括以下步驟a、保存數(shù)據(jù)的預定義類型值;b、保存所述數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值;c、依照所述復雜類型子成員的順序,才艮據(jù)其數(shù)據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)保存方式對其進行保存。上述方案中,所述步驟a之前還包括以下步驟判斷所述數(shù)據(jù)是否為空值,若是,保存空類型值并結(jié)束序列化流程,否則,ii^所述步驟a。上述方案中,所述步驟c中的復雜類型子成員為結(jié)構(gòu)體類型數(shù)據(jù)時,通過以下步驟對其進行保存cll、保存所述結(jié)構(gòu)體類型數(shù)據(jù)的預定義類型值;cl2、保存所述結(jié)構(gòu)體類型數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值;c13、依照所述結(jié)構(gòu)體類型數(shù)據(jù)復雜類型子成員的順序,依據(jù)其數(shù)據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)保存方式對其進行保存。上述方案中,所述步驟c中的復雜類型子成員為聯(lián)合類型數(shù)據(jù)時,通過以下步驟對其進行保存c21、保存所述聯(lián)合類型數(shù)據(jù)的預定義類型值;c22、所述聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為筒單類型數(shù)據(jù)時,保存其數(shù)據(jù)值;所述聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為復雜類型數(shù)據(jù)時,才艮據(jù)其數(shù)據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)保存方式對其進行保存。上述方案中,所述步驟c中的復雜類型子成員為字符串類型數(shù)據(jù)時,通過以下步驟對其進行保存c31、保存所述字符串類型數(shù)據(jù)的預定義類型值;c32、保存所述字符串類型數(shù)據(jù)的長度值;c33、保存所述字符串類型數(shù)據(jù)的數(shù)據(jù)值;c34、保存空類型值。一種ESG數(shù)據(jù)的反序列化方法,包括以下步驟A、數(shù)據(jù)的類型值為電子服務指南數(shù)據(jù)類型值時,將所述數(shù)據(jù)的簡分配的內(nèi)存中;B、依照所述復雜類型子成員的順序,根據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中。上述方案中,所述步驟A之前還包括以下步驟判斷所述數(shù)據(jù)的類型值是否為空類型值,若是,在所迷內(nèi)存中保存空值并結(jié)束反序列化流程,否則,進入所述步驟A。上述方案中,所述步驟B中的復雜類型子成員的數(shù)據(jù)類型值為結(jié)構(gòu)體類型值時,通過以下步驟將其讀取到所述內(nèi)存中Bll、將所述結(jié)構(gòu)體類型數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值讀取到所述內(nèi)存中;B12、依照所述結(jié)構(gòu)體類型數(shù)據(jù)復雜類型子成員的順序,依據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中。上述方案中,所述步驟B中的復雜類型子成員的數(shù)據(jù)類型值為聯(lián)合類型值時,若所述聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為簡單類型數(shù)據(jù),將其數(shù)據(jù)值讀取到所述內(nèi)存中;若所述聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為復雜類型數(shù)據(jù),則根據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中。上述方案中,所述步驟B中的復雜類型子成員的數(shù)據(jù)類型值為字符串類型值時,通過以下步驟將其讀取到所述內(nèi)存中B31、將所述字符串類型數(shù)據(jù)的長度值讀取到所述內(nèi)存中;B32、將所述字符串類型數(shù)據(jù)的數(shù)據(jù)值讀取到所述內(nèi)存中;B33、將空類型值讀取到所述內(nèi)存中。本發(fā)明的有益效果主要表現(xiàn)在本發(fā)明提供的技術(shù)方案提出了一種ESG數(shù)據(jù)的序列化及反序列化方法,實現(xiàn)了ESG數(shù)據(jù)的快速保存與恢復,可以縮短用戶使用手持設備接收數(shù)字電視過程中的等待時間。圖1為本發(fā)明ESG數(shù)據(jù)的序列化方法流程圖;圖2為本發(fā)明ESG數(shù)據(jù)的反序列化方法流程圖。具體實施方式下面結(jié)合附圖對本發(fā)明作進一步的描述。實際操作過程中,可以如表1對ESG數(shù)據(jù)通用結(jié)構(gòu)體進行定義:<table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>表1同時,并且按如下方式預定義ESG數(shù)據(jù)的類型值:typedefen咖T一ESGDataType一e《ESGDATATYPE一ihj"-0,—ESGDATATYPE二ESGDATA,ESGDJLTJITYPE二CHAR,〃其他ESG數(shù)據(jù)類型ESGDATATYPE一STOUCTTYPE1,ESGDATATYPE二SraUCTTYPE2,ESGDATJLTYPESTRUCTTYPEN,E5GDJLTATYPE一INVALIDE=OxrFFFTFFF}一其中,ESGDATATYPE-NULL表示空類型值,內(nèi)存中用^^示ESG數(shù)據(jù)時,文件中用該值標記同類型數(shù)據(jù)的結(jié)束;ESGDATATYPE-ESGDATA用于表示ESG數(shù)據(jù)類型值。參照圖l,對ESG數(shù)據(jù)進行序列化時,包括以下步驟S101:判斷數(shù)據(jù)是否為空值,若是,保存空類型值并結(jié)束本流程,否則,進入下一步;S102:保存該數(shù)據(jù)的預定義類型值;S103:保存該數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值;S104:依照所述復雜類型子成員的聲明順序,才艮據(jù)其翁:據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)^方式對其進行保存,具體如下所述1、若某復雜類型子成員為結(jié)構(gòu)體類型數(shù)據(jù),通過以下步驟對其進行保存首先,保存該結(jié)構(gòu)體類型數(shù)據(jù)的預定義類型值;其次,保存該結(jié)構(gòu)體類型數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值;最后,依照該結(jié)構(gòu)體類型數(shù)據(jù)復雜類型子成員的順序,仿4^其數(shù)據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的翁:據(jù)保存方式對其進行保存。2、若某復雜類型子成員為聯(lián)合類型數(shù)據(jù),通過以下步驟對其進4亍保存首先,保存該聯(lián)合類型數(shù)據(jù)的預定義類型值;然后,該聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為筒單類型數(shù)據(jù)時,保存其數(shù)據(jù)值;該聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為復雜類型數(shù)據(jù)時,根據(jù)其數(shù)據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)保存方式對其進行保存。3、若某復雜類型子成員為字符串類型數(shù)據(jù)時,通過以下步驟對其進行保存首先,保存該字符串類型數(shù)據(jù)的預定義類型值;其次,保存該字符串類型數(shù)據(jù)的長度值;再次,保存該字符串類型數(shù)據(jù)的數(shù)據(jù)值;最后,保存空類型值。該數(shù)據(jù)保存完畢后,如果還有ESG數(shù)據(jù)需要^^,則再次執(zhí)行上述流程。在序列化時可以設置一個適當大小的內(nèi)存緩沖區(qū),每次在保存ESG數(shù)據(jù)時,先判斷緩沖區(qū)是否寫滿,如果即將寫滿,則先將緩沖區(qū)中的數(shù)據(jù)寫到文件中并清空緩沖區(qū),否則,直接將ESG寫到緩沖區(qū)中;所有的數(shù)據(jù)處理完以后緩沖區(qū)未滿,則將緩沖區(qū)中的數(shù)據(jù)寫到文件中。內(nèi)存緩沖區(qū)的應用可以進一步提高數(shù)據(jù)保存的效率。參照圖2,對ESG數(shù)據(jù)進行反序列化時,包括以下步驟S201:讀取數(shù)據(jù)的類型值;S202:判斷所述類型值是否為空類型值,若是,在內(nèi)存中保存空值并結(jié)束本流程,否則,ii7v下一步;S203:判斷所述類型值是否為ESG數(shù)據(jù)類型值,若是,i^下一步,否則,在內(nèi)存中保存空值并結(jié)束本流程;S204:將該數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值讀取到為其分配的內(nèi)存中;S205:依照所述復雜類型子成員的順序,根據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中;也就是說,對于每個復雜類型子成員,首先讀取其類型值,然后根據(jù)類型值采取相應的數(shù)據(jù)讀取方式,具體如下所述1、若某復雜類型子成員的數(shù)據(jù)類型值為結(jié)構(gòu)體類型值,通過以下步驟將其讀取到所述內(nèi)存中首先,將該結(jié)構(gòu)體類型數(shù)據(jù)的筒單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值讀取到所述內(nèi)存中;其次,依照該結(jié)構(gòu)體類型數(shù)據(jù)復雜類型子成員的順序,依據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中。2、若某復雜類型子成員的數(shù)據(jù)類型值為聯(lián)合類型值,則該聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為簡單類型數(shù)據(jù)時,將其數(shù)據(jù)值讀取到所述內(nèi)存中;該聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為復雜類型數(shù)據(jù)時,根據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中。3、若某復雜類型子成員的數(shù)據(jù)類型值為字符串類型值,通過以下步驟將其讀取到所述內(nèi)存中首先,將該字符串類型數(shù)據(jù)的長度值讀取到所述內(nèi)存中;其次,將該字符串類型數(shù)據(jù)的數(shù)據(jù)值讀取到所述內(nèi)存中;最后,將空類型值讀取到所述內(nèi)存中。該數(shù)據(jù)讀取完畢后,如果還有ESG數(shù)據(jù)需要讀取到內(nèi)存中,則再次執(zhí)行上述流程。通過以上描述可以看出,本發(fā)明序列化過程中保存了每個復雜類型數(shù)據(jù)的預定義類型值,在反序列化的過程中通過讀取類型值即可判斷該數(shù)據(jù)是什么類型,根據(jù)數(shù)據(jù)的類型將其保存到內(nèi)存相應的位置,從而解決了復雜類型數(shù)據(jù)從文件中恢復后指針無效的問題。以上所述僅為本發(fā)明的實施例而已,并不用于限制本發(fā)明,對于本領域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。權(quán)利要求1、一種電子服務指南數(shù)據(jù)的序列化方法,其特征在于,包括以下步驟a、保存數(shù)據(jù)的預定義類型值;b、保存所述數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值;c、依照所述復雜類型子成員的順序,根據(jù)其數(shù)據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)保存方式對其進行保存。2、如權(quán)利要求1所述的電子服務指南數(shù)據(jù)的序列化方法,其特征在于,所述步驟a之前還包括以下步驟判斷所述數(shù)據(jù)是否為空值,若是,保存空類型值并結(jié)束序列化流程,否則,進入所述步驟a。3、如權(quán)利要求1所述的電子服務指南數(shù)據(jù)的序列化方法,其特征在于,所述步驟c中的復雜類型子成員為結(jié)構(gòu)體類型數(shù)據(jù)時,通過以下步驟對其進行保存cll、保存所述結(jié)構(gòu)體類型數(shù)據(jù)的預定義類型值;cl2、保存所述結(jié)構(gòu)體類型數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值;c13、依照所述結(jié)構(gòu)體類型數(shù)據(jù)復雜類型子成員的順序,依據(jù)其數(shù)據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)保存方式對其進行保存。4、如權(quán)利要求1所述的電子服務指南數(shù)據(jù)的序列化方法,其特征在于,所述步驟c中的復雜類型子成員為聯(lián)合類型數(shù)據(jù)時,通過以下步驟對其進行保存c21、保存所述聯(lián)合類型數(shù)據(jù)的預定義類型值;c22、所述聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為簡單類型數(shù)據(jù)時,保存其數(shù)據(jù)值;所述聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為復雜類型數(shù)據(jù)時,才艮據(jù)其數(shù)據(jù)類型是結(jié)構(gòu)體類型、.聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)保存方式對其進行保存。5、如權(quán)利要求1所述的電子服務指南數(shù)據(jù)的序列化方法,其特征在于,所述步驟c中的復雜類型子成員為字符串類型數(shù)據(jù)時,通過以下步驟對其進行保存c31、保存所述字符串類型數(shù)據(jù)的預定義類型值;c32、保存所述字符串類型數(shù)據(jù)的長度值;c33、保存所述字符串類型數(shù)據(jù)的數(shù)據(jù)值;c34、保存空類型值。6、一種電子服務指南數(shù)據(jù)的反序列化方法,其特征在于,包括以下步驟A、數(shù)據(jù)的類型值為電子服務指南數(shù)據(jù)類型值時,將所述數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值讀取到為所述數(shù)據(jù)分配的內(nèi)存中;B、依照所述復雜類型子成員的順序,根據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中。7、如權(quán)利要求6所述的電子服務指南數(shù)據(jù)的反序列化方法,其特征在于,所述步驟A之前還包括以下步驟判斷所述數(shù)據(jù)的類型值是否為空類型值,若是,在所述內(nèi)存中保存空值并結(jié)束反序列化流程,否則,ii7v所述步驟A。8、如權(quán)利要求6所述的電子服務指南數(shù)據(jù)的反序列化方法,其特征在于,所述步驟B中的復雜類型子成員的數(shù)據(jù)類型值為結(jié)構(gòu)體類型值時,通過以下步驟將其讀取到所述內(nèi)存中Bll、將所述結(jié)構(gòu)體類型數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值讀取到所述內(nèi)存中;B12、依照所述結(jié)構(gòu)體類型數(shù)據(jù)復雜類型子成員的順序,依據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中。9、如權(quán)利要求6所述的電子服務指南數(shù)據(jù)的反序列化方法,其特征在于,所述步驟B中的復雜類型子成員的數(shù)據(jù)類型值為聯(lián)合類型值時,若所述聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為筒單類型數(shù)據(jù),將其數(shù)據(jù)值讀取到所述內(nèi)存中;若所述聯(lián)合類型數(shù)據(jù)保存的數(shù)據(jù)為復雜類型數(shù)據(jù),則根據(jù)其數(shù)據(jù)類型值是結(jié)構(gòu)體類型值、聯(lián)合類型值或字符串類型值采用相應的數(shù)據(jù)讀取方式將其讀取到所述內(nèi)存中。10、如權(quán)利要求6所述的電子服務指南數(shù)據(jù)的反序列化方法,其特征在于,所述步驟B中的復雜類型子成員的數(shù)據(jù)類型值為字符串類3型值時,通過以下步驟將其讀取到所述內(nèi)存中B31、將所述字符串類型數(shù)據(jù)的長度值讀取到所述內(nèi)存中;B32、將所述字符串類型數(shù)據(jù)的數(shù)據(jù)值讀取到所述內(nèi)存中;B33、將空類型值讀取到所述內(nèi)存中。全文摘要本發(fā)明公開了一種電子服務指南數(shù)據(jù)的序列化及反序列化方法,序列化方法中,首先,保存數(shù)據(jù)的預定義類型值;然后,保存所述數(shù)據(jù)的簡單類型子成員的數(shù)據(jù)值及復雜類型子成員的地址值;最后,依照所述復雜類型子成員的順序,根據(jù)其數(shù)據(jù)類型是結(jié)構(gòu)體類型、聯(lián)合類型或字符串類型采用相應的數(shù)據(jù)保存方式對其進行保存。本發(fā)明所述技術(shù)方案實現(xiàn)了電子服務指南數(shù)據(jù)的快速保存與恢復。文檔編號G06F17/30GK101277161SQ20081006637公開日2008年10月1日申請日期2008年3月28日優(yōu)先權(quán)日2008年3月28日發(fā)明者劉東升申請人:中興通訊股份有限公司