欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種發(fā)送復(fù)雜消息的方法

文檔序號:6471298閱讀:131來源:國知局
專利名稱:一種發(fā)送復(fù)雜消息的方法
技術(shù)領(lǐng)域
本發(fā)明涉及發(fā)送復(fù)雜消息的技術(shù),尤其涉及一種在進(jìn)程間發(fā)送復(fù)雜消息的方法。
背景技術(shù)
在通信領(lǐng)域的系統(tǒng)實(shí)現(xiàn)中,進(jìn)程間通信實(shí)際上就是在進(jìn)程間發(fā)送消息,而發(fā)送消
息的具體實(shí)現(xiàn)通常是將消息以消息報(bào)文的形式封裝后,在進(jìn)程間發(fā)送該消息報(bào)文。由于進(jìn)
程之間的獨(dú)立性,發(fā)送消息報(bào)文的過程都可抽象為將消息報(bào)文從源緩存區(qū)拷貝到目的緩存
區(qū)的過程,如圖l所示,可直觀得出發(fā)送消息報(bào)文過程的抽象。然而,對于含有數(shù)據(jù)指針的
復(fù)雜消息,由于該復(fù)雜消息中既包括了數(shù)據(jù)指針本身,又包括了數(shù)據(jù)指針?biāo)玫臄?shù)據(jù),因
此,仍然采用上述將消息報(bào)文從源緩存區(qū)拷貝到目的緩存區(qū)的簡單拷貝操作,將只拷貝了
數(shù)據(jù)指針本身,而未拷貝指針?biāo)玫臄?shù)據(jù),從而導(dǎo)致該復(fù)雜消息發(fā)送失敗。
為了便于描述,以下將含有一個(gè)或多個(gè)數(shù)據(jù)指針的復(fù)雜消息簡稱為立體消息。立
體消息以含有一個(gè)或多個(gè)數(shù)據(jù)指針為核心特征,如圖2所示,可直觀看出立體消息的這一
核心特征。 一個(gè)數(shù)據(jù)指針還可以被包含在被其他數(shù)據(jù)指針?biāo)玫囊粩?shù)據(jù)塊里。針對立體
消息而言,必須首先將立體消息封裝為可發(fā)送的消息報(bào)文后,才能進(jìn)行發(fā)送。將通過對立體
消息施加處理而得到的可以發(fā)送的消息報(bào)文簡稱為立體消息報(bào)文。 現(xiàn)有技術(shù)中,采用靜態(tài)平面化技術(shù)獲得立體消息報(bào)文是將立體消息中的數(shù)據(jù)指 針本體轉(zhuǎn)化為固定長度的字節(jié)序列,也就是將以指針數(shù)據(jù)結(jié)構(gòu)描述的數(shù)據(jù)指針本體轉(zhuǎn)化為 以數(shù)組數(shù)據(jù)結(jié)構(gòu)描述的數(shù)組,使數(shù)據(jù)指針本體和數(shù)據(jù)指針本體所引用的數(shù)據(jù)全部駐留在立 體消息里。 現(xiàn)有技術(shù)存在的缺陷是由于系統(tǒng)中需設(shè)置兩套數(shù)據(jù)結(jié)構(gòu),即指針數(shù)據(jù)結(jié)構(gòu)和數(shù) 組數(shù)據(jù)結(jié)構(gòu),因此會導(dǎo)致消息表達(dá)異構(gòu)的問題。而消息表達(dá)異構(gòu),隨之會帶來一系列問題, 比如內(nèi)存拷貝次數(shù)增加;內(nèi)存分配冗余;內(nèi)存分配冗余導(dǎo)致的內(nèi)存拷貝量增加;系統(tǒng)效率 運(yùn)行低下以及系統(tǒng)設(shè)計(jì)復(fù)雜度增加等。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種發(fā)送復(fù)雜消息的方法,不僅能實(shí)現(xiàn)立
體消息報(bào)文的發(fā)送,而且消息表達(dá)簡單,避免了消息表達(dá)異構(gòu)導(dǎo)致的一系列問題。 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 —種發(fā)送復(fù)雜消息的方法,該方法包括 在緩沖區(qū)上為待發(fā)送的立體消息動態(tài)分配內(nèi)存; 將所述立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移后,發(fā)送所述 立體消息報(bào)文。 其中,所述發(fā)送立體消息報(bào)文后還包括將立體消息報(bào)文緩沖區(qū)內(nèi)的偏移轉(zhuǎn)化為 本地?cái)?shù)據(jù)指針。 其中,所述動態(tài)分配內(nèi)存為動態(tài)連續(xù)地分配內(nèi)存,并實(shí)現(xiàn)內(nèi)存分配冗余為零;
在發(fā)送端,所述在緩沖區(qū)上為待發(fā)送的立體消息動態(tài)分配內(nèi)存進(jìn)一步包括 為所述立體消息中的數(shù)據(jù)指針動態(tài)連續(xù)地分配內(nèi)存,以及為立體消息中數(shù)據(jù)指針
所引用的數(shù)據(jù)動態(tài)連續(xù)地分配內(nèi)存。
其中,所述緩沖區(qū)的長度的計(jì)算公式為 AT
<formula>formula see original document page 5</formula>
其中,Lb為緩沖區(qū)的長度;Lm為所述立體消息報(bào)文的主體的長度;N為所述立體消 息中含有的數(shù)據(jù)指針的總個(gè)數(shù);Ln為第n的數(shù)據(jù)指針?biāo)玫臄?shù)據(jù)的長度。
其中,所述為立體消息中的數(shù)據(jù)指針動態(tài)連續(xù)地分配內(nèi)存,以及為立體消息中數(shù) 據(jù)指針?biāo)玫臄?shù)據(jù)動態(tài)連續(xù)地分配內(nèi)存具體包括 Al、通過劃分所述Lm長度的內(nèi)存,在所述緩沖區(qū)上為所述立體消息報(bào)文的主體分 配內(nèi)存,記錄所述立體消息報(bào)文的指針為P ;根據(jù)L = Lm計(jì)算出當(dāng)前立體消息報(bào)文的總長度 值;其中,L為所述立體消息報(bào)文的當(dāng)前的總長度; A2、從所述緩沖區(qū)的內(nèi)存的P+L位置開始,采取以下公式為Pn::P劃分Ln長度的內(nèi)
存,實(shí)現(xiàn)內(nèi)存的動態(tài)連續(xù)分配;
[Pn: :P] = [P]+L ;所述公式中,Pj :P表示所述P中的第n個(gè)數(shù)據(jù)指針;[Pn: :P]表示訪問以P。 P的 值為地址的內(nèi)存單元的內(nèi)容;[P]表示訪問以P的值為地址的內(nèi)存單元的內(nèi)容;
A3、緩存L值;同時(shí)根據(jù)Ln的值更新L值
L = L+Ln ; 公式中,Ln表示該數(shù)據(jù)指針引用數(shù)據(jù)的長度。 其中,所述將立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移之前還 包括 記錄所述Pj :P在所述緩沖區(qū)內(nèi)的偏移Ipn,以及所述Pn: :P引用的數(shù)據(jù)在緩沖區(qū) 內(nèi)的偏移In ;其中,所述In為所述步驟A3中緩存操作對應(yīng)的L值,并在對所述L值的緩存
操作中,完成對In的記錄;所述I,采取以下公式獲得
Ipn = (#Pn: :P)-P ; 公式中,(#Pn: :P)表示取存放Pn: :P的內(nèi)存地址。 其中,所述將立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移具體 為根據(jù)所述In和所述Ipn獲得序列(Ipn, In);將所述序列(Ipn, In)中的In值寫入相 對應(yīng)的I,所引用的內(nèi)存,實(shí)現(xiàn)所述轉(zhuǎn)換,采取以下公式獲得
[P+Ipn] = In ; 公式中,[P+Ipn]表示訪問以P+Ipn的值為地址的內(nèi)存單元的內(nèi)容。 其中,所述將立體消息報(bào)文緩沖區(qū)內(nèi)的偏移轉(zhuǎn)化為本地?cái)?shù)據(jù)指針具體采取以下公
式獲得 [#Pn: :P] = P+Pn: :P ; 其中,[#Pn: :P]表示訪問以#Pn: :P的值為地址的內(nèi)存單元的內(nèi)容;#Pn: :P表示取 存放Pn::P的內(nèi)存地址。
在發(fā)送端本發(fā)明動態(tài)連續(xù)分配數(shù)據(jù)塊;本發(fā)明區(qū)別于現(xiàn)有技術(shù),是對立體消息進(jìn) 行動態(tài)平面化后獲得立體消息報(bào)文,即為將立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文 緩沖區(qū)內(nèi)的偏移,從而將業(yè)務(wù)應(yīng)用層定義的、滿足業(yè)務(wù)應(yīng)用層需要的立體消息轉(zhuǎn)化為滿足 立體消息發(fā)送需要的立體消息報(bào)文。由于數(shù)據(jù)指針和將數(shù)據(jù)指針轉(zhuǎn)化后生成的偏移都是以 指針數(shù)據(jù)結(jié)構(gòu)描述的,因此,為了同時(shí)滿足業(yè)務(wù)應(yīng)用層需要和立體消息發(fā)送需要,這種轉(zhuǎn)化 不存在消息表達(dá)異構(gòu),從而避免了消息表達(dá)異構(gòu)所導(dǎo)致的一系列問題。在接收端,本發(fā)明區(qū) 別于現(xiàn)有技術(shù),無需專門在系統(tǒng)中設(shè)計(jì)轉(zhuǎn)換模塊,而是對立體消息報(bào)文進(jìn)行立體化后獲得 立體消息,即為接收端接收到發(fā)送端發(fā)送的立體消息報(bào)文,將立體消息報(bào)文緩沖區(qū)內(nèi)的偏 移轉(zhuǎn)化為本地?cái)?shù)據(jù)指針,來快速獲得業(yè)務(wù)應(yīng)用層需要的立體消息。其中,動態(tài)平面化實(shí)際上 是立體消息里的數(shù)據(jù)指針與立體消息報(bào)文里的偏移之間的變換,而立體化實(shí)際上立體消息 里的數(shù)據(jù)指針與立體消息報(bào)文里的偏移之間的逆變換。 綜上所述,本發(fā)明通過立體消息里的數(shù)據(jù)指針與立體消息報(bào)文里偏移之間的變換 與逆變換技術(shù),以及獲得立體消息報(bào)文里偏移的新技術(shù),實(shí)現(xiàn)立體消息與立體消息報(bào)文的 動態(tài)轉(zhuǎn)換,完成立體消息報(bào)文的發(fā)送與接收。不僅能實(shí)現(xiàn)立體消息報(bào)文的發(fā)送,而且本發(fā)明 消息表達(dá)簡單,使用一套數(shù)據(jù)結(jié)構(gòu)即指針數(shù)據(jù)結(jié)構(gòu)描述即可,無需像現(xiàn)有技術(shù)那樣維護(hù)兩 套數(shù)據(jù)結(jié)構(gòu),消除了消息表達(dá)異構(gòu)。從而避免了消息表達(dá)異構(gòu)導(dǎo)致的一系列問題,比如內(nèi)存 拷貝次數(shù)/內(nèi)存拷貝量的增加和系統(tǒng)設(shè)計(jì)復(fù)雜度增加等。而且,本發(fā)明采用數(shù)據(jù)塊動態(tài)連 續(xù)分配的技術(shù),能更好地消除內(nèi)存冗余分配,降低系統(tǒng)對內(nèi)存的需求,使進(jìn)程間消息流量顯 著降低。


圖1為消息報(bào)文發(fā)送的通用示意圖; 圖2為具有一個(gè)或多個(gè)數(shù)據(jù)指針的立體消息的示意圖; 圖3為應(yīng)用現(xiàn)有靜態(tài)平面化技術(shù)得到的立體消息報(bào)文的示意圖; 圖4為靜態(tài)平面化后產(chǎn)生的內(nèi)存冗余的示意圖; 圖5為應(yīng)用本發(fā)明動態(tài)平面化技術(shù)得到立體消息報(bào)文的示意圖; 圖6是應(yīng)用本發(fā)明動態(tài)平面化和立體化技術(shù)的整個(gè)過程的示意圖; 圖7為本發(fā)明方法的實(shí)現(xiàn)流程示意圖。
具體實(shí)施例方式
本發(fā)明的基本思想是通過立體消息里的數(shù)據(jù)指針與立體消息報(bào)文里偏移之間的 變換與逆變換技術(shù),以及獲得立體消息報(bào)文里偏移的新技術(shù),實(shí)現(xiàn)立體消息與立體消息報(bào) 文的動態(tài)轉(zhuǎn)換,完成立體消息報(bào)文的發(fā)送與接收。
下面結(jié)合附圖對技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。 以下將現(xiàn)有技術(shù)和本發(fā)明進(jìn)行對比闡述,以更好地體現(xiàn)本發(fā)明相對于現(xiàn)有技術(shù)的 優(yōu)點(diǎn)。 就現(xiàn)有技術(shù)而言,在現(xiàn)有技術(shù)中,獲得立體消息報(bào)文的方法采用靜態(tài)平面化技術(shù)。 具體來說,將立體消息中的數(shù)據(jù)指針本體轉(zhuǎn)化為固定長度的字節(jié)序列,也就是將以指針數(shù) 據(jù)結(jié)構(gòu)描述的數(shù)據(jù)指針本體轉(zhuǎn)化為以數(shù)組數(shù)據(jù)結(jié)構(gòu)描述的數(shù)組,然后將數(shù)據(jù)指針本體所引用的數(shù)據(jù)放入轉(zhuǎn)化生成的數(shù)組中。從而,讓數(shù)據(jù)指針本體和數(shù)據(jù)指針本體所引用的數(shù)據(jù)全 部駐留在立體消息里。那么通過對立體消息施加上述靜態(tài)平面化的處理,就形成了可發(fā)送 的立體消息報(bào)文。采用靜態(tài)平面化技術(shù)得到的立體消息報(bào)文如圖3所示。圖4為靜態(tài)平面 化后產(chǎn)生的內(nèi)存冗余的示意圖,圖4中,陰影填充的部分代表當(dāng)前使用的內(nèi)存,空白的部分 代表冗余分配的內(nèi)存。 現(xiàn)有技術(shù)存在的缺點(diǎn)包括以下幾個(gè)方面。 第一方面、采用現(xiàn)有技術(shù)會導(dǎo)致消息表達(dá)異構(gòu)。原因在于在業(yè)務(wù)應(yīng)用層,也就是 實(shí)際操作時(shí)使用的立體消息表達(dá)方式是數(shù)據(jù)指針本體加數(shù)據(jù)指針本體所引用的數(shù)據(jù);而 在進(jìn)程間通信發(fā)送立體消息時(shí)需要采用立體消息報(bào)文,也就是說包含數(shù)據(jù)指針本體的立體 消息是不可以直接發(fā)送的,為了實(shí)現(xiàn)立體消息的發(fā)送需要將數(shù)據(jù)指針本體轉(zhuǎn)化為數(shù)組,那 么在進(jìn)程間通信發(fā)送立體消息時(shí)使用的立體消息表達(dá)方式是由對數(shù)據(jù)指針本體轉(zhuǎn)化生成 的數(shù)組加原數(shù)據(jù)指針本體所引用的數(shù)據(jù)。由于數(shù)據(jù)指針本體是以指針這種數(shù)據(jù)結(jié)構(gòu)描述 的,而數(shù)組是采用另一種數(shù)據(jù)結(jié)構(gòu),即以數(shù)組數(shù)據(jù)結(jié)構(gòu)描述的。因此,為了適應(yīng)同一條立體 消息在業(yè)務(wù)應(yīng)用層操作和立體消息發(fā)送的不同需要,系統(tǒng)內(nèi)將定義兩種類型的數(shù)據(jù)結(jié)構(gòu), 從而系統(tǒng)在讀/寫等操作過程中,要根據(jù)當(dāng)前需要選擇使用其中一個(gè)數(shù)據(jù)結(jié)構(gòu)表達(dá)的立體 消息,帶來操作混亂。 而且,消息表達(dá)異構(gòu)會進(jìn)一步產(chǎn)生額外的內(nèi)存拷貝次數(shù)的開銷。原因在于通常的 拷貝操作指消息報(bào)文發(fā)送過程中的數(shù)據(jù)拷貝操作。也就是說,將消息報(bào)文直接拷貝到系 統(tǒng)中即可。而針對消息表達(dá)異構(gòu)的立體消息而言,由于為了立體消息的發(fā)送定義了數(shù)組這 種額外的數(shù)據(jù)結(jié)構(gòu),因此立體消息的拷貝操作為先將原數(shù)據(jù)指針本體所引用的數(shù)據(jù)拷貝 到數(shù)組中,再將數(shù)組拷貝到系統(tǒng)中。也就是說,立體消息的拷貝操作額外增加了由立體消息 到采用靜態(tài)平面化技術(shù)所獲得的立體消息報(bào)文的拷貝過程,然后才執(zhí)行上述通常的拷貝操 作。 第二方面、采用現(xiàn)有技術(shù)會導(dǎo)致內(nèi)存分配冗余和內(nèi)存拷貝量增加的問題。原因在 于針對內(nèi)存分配冗余而言,對數(shù)據(jù)指針本體轉(zhuǎn)化生成的數(shù)組通常不是按照實(shí)際需要定義 的,也就是說,預(yù)先定義時(shí)并不知道實(shí)際數(shù)據(jù)長度,數(shù)組是按照最大數(shù)據(jù)長度來統(tǒng)一定義 的。那么,在業(yè)務(wù)應(yīng)用層面的立體消息里,以數(shù)據(jù)指針和實(shí)際數(shù)據(jù)長度來表示的數(shù)據(jù),為了 滿足立體消息發(fā)送的需要,將數(shù)據(jù)指針轉(zhuǎn)化成數(shù)組后,都被最大化的分配在靜態(tài)平面化后 的立體消息報(bào)文主體里。從而,導(dǎo)致經(jīng)靜態(tài)平面化后的立體消息報(bào)文的結(jié)構(gòu)會非常大,按照 最大數(shù)據(jù)長度來統(tǒng)一定義數(shù)組并分配內(nèi)存,必然導(dǎo)致內(nèi)存分配冗余。針對內(nèi)存拷貝量增加 而言,由于按照最大數(shù)據(jù)長度來統(tǒng)一定義數(shù)組并分配內(nèi)存,內(nèi)存冗余,因此,在每一次執(zhí)行 拷貝操作時(shí)也是按照最大數(shù)據(jù)長度執(zhí)行拷貝,而不是按照實(shí)際數(shù)據(jù)長度執(zhí)行拷貝。也就是 說,內(nèi)存冗余導(dǎo)致每次都要拷貝最大化的數(shù)據(jù),使內(nèi)存拷貝量增加。 第三方面、采用現(xiàn)有技術(shù)會導(dǎo)致效率低下的問題。原因在于內(nèi)存冗余造成內(nèi)存拷 貝量的增加,以及由于消息表達(dá)異構(gòu)而造成的內(nèi)存拷貝次數(shù)的增加均造成系統(tǒng)開銷很大, 從而導(dǎo)致系統(tǒng)效率運(yùn)行低下。 第四方面、采用現(xiàn)有技術(shù)會導(dǎo)致對報(bào)文訪問的操作復(fù)雜,從而帶來系統(tǒng)設(shè)計(jì)復(fù)雜 度增加的問題。原因在于由于采用靜態(tài)平面化技術(shù)獲得的立體消息報(bào)文存在消息表達(dá)異 構(gòu)的問題,因此,立體消息的接收方不能直接使用接收到的立體消息報(bào)文,而必須通過轉(zhuǎn)換模塊,將立體消息報(bào)文中的數(shù)組轉(zhuǎn)換成數(shù)據(jù)指針,以滿足業(yè)務(wù)應(yīng)用層的需要,這樣勢必增加 系統(tǒng)設(shè)計(jì)的復(fù)雜度。 本發(fā)明應(yīng)運(yùn)而生,解決了現(xiàn)有技術(shù)存在的上述四方面問題。應(yīng)用本發(fā)明動態(tài)平面 化技術(shù)得到立體消息報(bào)文的布局如圖5所示。應(yīng)用本發(fā)明動態(tài)平面化和立體化技術(shù),來發(fā) 送與接收立體消息報(bào)文的過程如圖6所示,圖6中,發(fā)送端的立體消息的業(yè)務(wù)數(shù)據(jù)表示即 為滿足業(yè)務(wù)應(yīng)用層需求、包含數(shù)據(jù)指針和數(shù)據(jù)指針?biāo)玫臄?shù)據(jù)的立體消息,動態(tài)平面化 后的立體消息即為在發(fā)送端對該立體消息經(jīng)過動態(tài)平面化技術(shù)處理后獲得的立體消息報(bào) 文。 本發(fā)明消息表達(dá)簡單,使用一套數(shù)據(jù)結(jié)構(gòu)即指針數(shù)據(jù)結(jié)構(gòu)描述即可。無需像現(xiàn)有 技術(shù)那樣,專門為了實(shí)現(xiàn)立體消息報(bào)文的發(fā)送定義額外的數(shù)據(jù)結(jié)構(gòu)即數(shù)組數(shù)據(jù)結(jié)構(gòu),維護(hù) 兩套數(shù)據(jù)結(jié)構(gòu),可見采用本發(fā)明消除了消息表達(dá)異構(gòu),從而避免了消息表達(dá)異構(gòu)導(dǎo)致的一 系列問題。 具體來說,本發(fā)明通過立體消息里的數(shù)據(jù)指針與立體消息報(bào)文里偏移之間的變換 與逆變換技術(shù),使消息的表達(dá)方式簡便,消除了消息表達(dá)異構(gòu)。并采用封裝全部本地?cái)?shù)據(jù)指 針與緩沖區(qū)偏移之間的變換操作的手段,使系統(tǒng)接收端直接根據(jù)緩沖區(qū)偏移,經(jīng)逆變換獲 得本地?cái)?shù)據(jù)指針,而無需像現(xiàn)有技術(shù)那樣,專門在接收端設(shè)計(jì)轉(zhuǎn)換模塊??梢姡捎帽景l(fā)明, 消除消息表達(dá)異構(gòu)的同時(shí),極大地降低了系統(tǒng)設(shè)計(jì)的復(fù)雜度。消除消息表達(dá)異構(gòu)的同時(shí),本 發(fā)明基于可靠的數(shù)據(jù)塊動態(tài)連續(xù)分配技術(shù)來分別分配立體消息報(bào)文中數(shù)據(jù)指針本體所占 的內(nèi)存,以及數(shù)據(jù)指針本體所引用數(shù)據(jù)塊所占的內(nèi)存。這種對內(nèi)存的二次動態(tài)連續(xù)分配技 術(shù),是按照實(shí)際數(shù)據(jù)長度進(jìn)行的動態(tài)分配,區(qū)別于現(xiàn)有技術(shù)是按照最大數(shù)據(jù)長度統(tǒng)一預(yù)先 分配的方式??梢?,采用本發(fā)明使得內(nèi)存分配冗余降為O,大大提高了內(nèi)存的使用率。當(dāng)內(nèi) 存分配冗余降為0時(shí),立體消息報(bào)文發(fā)送過程中的內(nèi)存拷貝的長度降至最短,內(nèi)存拷貝次 數(shù)和內(nèi)存拷貝量都大幅度減少,從而大大提高了系統(tǒng)運(yùn)行效率。
以下對本發(fā)明所采用的發(fā)送復(fù)雜消息的方法進(jìn)行具體闡述。
如圖7所示,一種發(fā)送復(fù)雜消息的方法,該方法包括以下步驟
步驟101、在緩沖區(qū)上為待發(fā)送的立體消息動態(tài)分配內(nèi)存。 步驟102、將該立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移后,發(fā) 送該立體消息報(bào)文。 這里,在發(fā)送端將該立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移 的處理可稱為動態(tài)平面化處理過程。通過對立體消息的動態(tài)平面化處理,實(shí)現(xiàn)了將符合業(yè) 務(wù)應(yīng)用層需要的立體消息轉(zhuǎn)化為符合立體消息發(fā)送需要的立體消息報(bào)文。當(dāng)在發(fā)送端對立 體消息采取動態(tài)平面化處理獲得立體消息報(bào)文后,發(fā)送該立體消息報(bào)文;當(dāng)接收端收到該 立體消息報(bào)文后,步驟102后還包括 步驟201、將立體消息報(bào)文緩沖區(qū)內(nèi)的偏移轉(zhuǎn)化為本地?cái)?shù)據(jù)指針。 這里,在接收端將立體消息報(bào)文緩沖區(qū)內(nèi)的偏移轉(zhuǎn)化為本地?cái)?shù)據(jù)指針的處理可稱
為立體化處理過程。通過對立體消息報(bào)文的立體化處理,實(shí)現(xiàn)了將符合立體消息發(fā)送需要
的立體消息報(bào)文轉(zhuǎn)化為業(yè)務(wù)應(yīng)用層需要的立體消息。 以下對上述步驟的技術(shù)實(shí)現(xiàn)進(jìn)行細(xì)化并具體闡述上述步驟實(shí)現(xiàn)的技術(shù)細(xì)節(jié)。
8
其中,步驟101中,該緩沖區(qū)的長度的計(jì)算公式為Z6 二J]A^+丄M ;其中,Lb為
緩沖區(qū)的長度;Lm為所述立體消息報(bào)文的主體的長度;N為所述立體消息中含有的數(shù)據(jù)指 針的總個(gè)數(shù);Ln為第n的數(shù)據(jù)指針?biāo)玫臄?shù)據(jù)的長度。而且,步驟101中,動態(tài)分配內(nèi)存 為動態(tài)連續(xù)地分配內(nèi)存,并實(shí)現(xiàn)內(nèi)存分配冗余為零。那么,步驟101進(jìn)一步包括
步驟1011、為立體消息中的數(shù)據(jù)指針動態(tài)連續(xù)地分配內(nèi)存,以及為立體消息中數(shù)
據(jù)指針?biāo)玫臄?shù)據(jù)動態(tài)連續(xù)地分配內(nèi)存。
這里,步驟1011的具體處理過程包括 步驟1011a、通過劃分所述Lm長度的內(nèi)存,在所述緩沖區(qū)上為所述立體消息報(bào)文的 主體分配內(nèi)存,記錄所述立體消息報(bào)文的指針為P ;根據(jù)L = Lm計(jì)算出當(dāng)前立體消息報(bào)文的 總長度值;其中,L為所述立體消息報(bào)文的當(dāng)前的總長度。 這里,針對L而言,隨著為立體消息里的多個(gè)指針,依次動態(tài)分配內(nèi)存的進(jìn)行,L的 值將被及時(shí)的緩存和更新。并且,緩存L的值是為了獲得后續(xù)步驟102a中描述的In。
步驟1011b、從緩沖區(qū)的內(nèi)存的P+L位置開始,采取以下公式(1)為Pn::P劃分Ln 長度的內(nèi)存,實(shí)現(xiàn)內(nèi)存的動態(tài)連續(xù)分配。這里的Ln表示該數(shù)據(jù)指針引用數(shù)據(jù)的長度。
[Pn: :P] = [P]+L (1) 公式(l)中,Pn::P表示所述P中的第n個(gè)數(shù)據(jù)指針;[Pn::P]表示訪問以Pn::P的 值為地址的內(nèi)存單元的內(nèi)容;[P]表示訪問以P的值為地址的內(nèi)存單元的內(nèi)容。
步驟1011c、緩存L值;同時(shí)根據(jù)Ln的值采用公式L = L+Ln來更新L值。公式中 的Ln表示該數(shù)據(jù)指針引用數(shù)據(jù)的長度。 其中,步驟102之前還包括計(jì)算緩沖區(qū)的偏移的步驟,具體為 步驟102a、記錄所述Pn: :P在所述緩沖區(qū)內(nèi)的偏移Ipn,以及所述P。 P引用的數(shù)據(jù)
在緩沖區(qū)內(nèi)的偏移In ;其中,所述In為上述步驟1011c中緩存操作對應(yīng)的L值,而非更新操
作對應(yīng)的L值,并在對緩存操作對應(yīng)的L值的緩存操作中,完成對In的記錄;所述Ipn采取
以下公式(2)獲得 Ipn = (#Pn: :P)-P (2) 公式(2)中,(#Pn: :P)表示取存放Pn: :P的內(nèi)存地址。
其中,步驟102的具體處理過程為根據(jù)所述In和所述Ipn獲得序列(Ipn, In);將所述序列(Ipn, In)中的In值寫入相
對應(yīng)的I,所引用的內(nèi)存,實(shí)現(xiàn)所述轉(zhuǎn)換,采取以下公式(3)獲得
[P+Ipn] = In (3) 公式(3)中,[P+Ipn]表示訪問以P+Ipn的值為地址的內(nèi)存單元的內(nèi)容。 其中,步驟201的具體處理過程為將立體消息報(bào)文緩沖區(qū)內(nèi)的偏移轉(zhuǎn)化為本地
數(shù)據(jù)指針具體采取以下公式(4)獲得 [#Pn: :P] = P+Pn: :P (4) 公式(4)中,[#Pn: :P]表示訪問以#Pn: :P的值為地址的內(nèi)存單元的內(nèi)容;#Pn: :P 表示取存放Pn: :P的內(nèi)存地址。 結(jié)合實(shí)際應(yīng)用,對實(shí)現(xiàn)發(fā)送端的動態(tài)平面化處理過程的原理,以及接收端的立體 化過程的原理進(jìn)行闡述。
針對發(fā)送端的動態(tài)平面化處理過程而言,包括以下步驟
步驟301、獲得發(fā)送緩沖區(qū)。 步驟302、在該緩沖區(qū)上為待發(fā)送的立體消息報(bào)文的主體分配內(nèi)存,記錄該立體消 息報(bào)文的指針為P。 這里需要指出的是,由于需要將立體消息處理成立體消息報(bào)文后才可以發(fā)送,因
此需要預(yù)先對立體消息報(bào)文進(jìn)行內(nèi)存分配和構(gòu)造。 步驟303、在發(fā)送緩沖區(qū)上構(gòu)建要發(fā)送的立體消息報(bào)文主體。 步驟304、在發(fā)送緩沖區(qū)上,為立體消息報(bào)文主體里的數(shù)據(jù)指針動態(tài)分配連續(xù)的內(nèi) 存。 步驟305、構(gòu)建立體消息報(bào)文主體里的數(shù)據(jù)指針?biāo)赶虻臄?shù)據(jù)。 步驟306、重復(fù)步驟304和步驟305,直到立體消息報(bào)文主體里的數(shù)據(jù)指針全部處
理完成。 步驟307、將立體消息報(bào)文主體里的數(shù)據(jù)指針值轉(zhuǎn)化為緩沖區(qū)內(nèi)的偏移值。 步驟308、計(jì)算經(jīng)動態(tài)平面化后獲得的立體消息報(bào)文的總長度,記錄為L。 步驟309、將立體消息報(bào)文的指針P,和經(jīng)動態(tài)平面化后獲得的立體消息報(bào)文的總
長度L這兩個(gè)立體消息報(bào)文發(fā)送的參數(shù)進(jìn)行封裝,發(fā)送立體消息報(bào)文。 針對接收端的立體化處理過程而言,包括以下步驟 步驟401、獲得接收到的立體消息報(bào)文的緩沖區(qū),并提取出P和L。 步驟402、轉(zhuǎn)化立體消息報(bào)文里的緩沖區(qū)偏移為本地?cái)?shù)據(jù)指針。 這里,由于在立體消息發(fā)送時(shí),采用了封裝全部本地?cái)?shù)據(jù)指針與緩沖區(qū)偏移之間
變換與逆變換的操作這一技術(shù)手段,因此,根據(jù)P以及提取出該變換操作的具體實(shí)現(xiàn),使系
統(tǒng)接收端直接根據(jù)緩沖區(qū)偏移,經(jīng)逆變換獲得本地?cái)?shù)據(jù)指針。 步驟403、重復(fù)執(zhí)行步驟402,直到立體消息報(bào)文主體里的數(shù)據(jù)指針全部處理完 成,結(jié)束執(zhí)行。 以下舉例對本發(fā)明的方法進(jìn)行闡述。本發(fā)明的方法實(shí)施例包括發(fā)送端的動態(tài)平 面化處理過程,以及接收端的立體化處理過程兩方面的內(nèi)容。 針對發(fā)送端的動態(tài)平面化處理過程而言,發(fā)送端的動態(tài)平面化處理過程包括以下 步驟 步驟501、獲得發(fā)送緩沖區(qū)。該緩沖區(qū)的長度可以由業(yè)務(wù)數(shù)據(jù)的需求獲得,具體來
說,采用計(jì)算公式為丄6 = J]Z^ +4 獲得。 公式中,Lb為緩沖區(qū)的長度;Lm為所述立體消息報(bào)文的主體的長度;N為立體消息 中含有的數(shù)據(jù)指針的總個(gè)數(shù)A為第n的數(shù)據(jù)指針?biāo)玫臄?shù)據(jù)的長度。Lb、 Lm、 N和Ln均 為整數(shù)。這里,Lm和N可以直接由表達(dá)立體消息報(bào)文的數(shù)據(jù)結(jié)構(gòu)獲得,Ln為運(yùn)行期的業(yè)務(wù) 賦值。 這里需要指出的是,由于處理器的對齊原因,如果需要S字節(jié)對齊,則Ln應(yīng)該以通 過公式(5)獲得,即取對齊值Ln'代替k。
Ln' = (Ln+S-1)/S (5) 公式(5)中,S為對齊值,取1,2,4,8,16中任一個(gè)即可。
10立體消息報(bào)文的主體分配內(nèi) 存,記錄立體消息報(bào)文的指針為P,則相當(dāng)于得到緩沖區(qū)上的立體消息。根據(jù)L = Lm計(jì)算出 當(dāng)前立體消息報(bào)文的總長度值;其中,L為立體消息報(bào)文的總長度。 這里需要指出的是,由于需要將立體消息處理成立體消息報(bào)文后才可以發(fā)送,因
此需要預(yù)先對立體消息報(bào)文進(jìn)行內(nèi)存分配和構(gòu)造。 步驟503、為立體消息報(bào)文的指針P賦值。 步驟504、從緩沖區(qū)的內(nèi)存的P+L位置開始,采取上述公式(1)為Pn::P劃分Ln長 度的內(nèi)存,實(shí)現(xiàn)內(nèi)存的動態(tài)連續(xù)分配。 這里,由于步驟504里采用上述公式(1)實(shí)現(xiàn)了內(nèi)存的動態(tài)連續(xù)分配,因此,消除 了內(nèi)存冗余分配,可使內(nèi)存冗余分配降低到零。從而降低了系統(tǒng)對內(nèi)存的需求,使進(jìn)程間消 息流量顯著降低。 步驟505、記錄Pn: :P在緩沖區(qū)內(nèi)的偏移Ipn,以及Pn: :P引用的數(shù)據(jù)在緩沖區(qū)內(nèi)的 偏移In ;其中,In即為L ;I,采取上述公式(2)獲得;采用公式L = L+Ln,計(jì)算出當(dāng)前立體消 息報(bào)文的總長度值,更新立體消息報(bào)文的總長度L。 這里,步驟505所采用的算法,即上述公式(2),能保證可靠的獲得數(shù)據(jù)指針自身 的偏移,從而為后續(xù)步驟508,對立體消息報(bào)文主體里的數(shù)據(jù)指針轉(zhuǎn)化為緩沖區(qū)偏移的轉(zhuǎn)換 提供了可靠保證。 步驟506 、為Pn所引用的數(shù)據(jù)賦值。 步驟507、重復(fù)步驟504、步驟505和步驟506,直到立體消息報(bào)文主體里的數(shù)據(jù)指 針全部處理完成。 這里,步驟507定義了一個(gè)循環(huán)處理過程。如果被處理的立體消息里包含如圖2 所示的P2—i類型的數(shù)據(jù)指針,即在一個(gè)被數(shù)據(jù)指針?biāo)玫臄?shù)據(jù)里包含的數(shù)據(jù)指針,可簡稱 次級數(shù)據(jù)指針,則要保證該次級數(shù)據(jù)指針被處理時(shí),引用此次級數(shù)據(jù)指針?biāo)诘臄?shù)據(jù)塊的 數(shù)據(jù)指針,可簡稱初級數(shù)據(jù)指針已經(jīng)被處理完畢。處理完畢意味著已經(jīng)執(zhí)行完步驟504、步 驟505和步驟506。 這里,步驟507完成時(shí),得到一個(gè)I卵和In的序列(Ipn, In) , n G [1, N]。 步驟508、將序列(Ipn, In)中的In值寫入相對應(yīng)的I,所引用的內(nèi)存,實(shí)現(xiàn)這種轉(zhuǎn)
換,采取上述公式(3)獲得。 這里,通過步驟508的轉(zhuǎn)換,就完成了立體消息報(bào)文主體里的數(shù)據(jù)指針轉(zhuǎn)化為緩 沖區(qū)偏移。 步驟509、計(jì)算立體消息經(jīng)動態(tài)平面化后獲得的立體消息報(bào)文的總長度為L。
步驟510、以立體消息報(bào)文的指針P和經(jīng)動態(tài)平面化后獲得的立體消息報(bào)文的總 長度L發(fā)送立體消息報(bào)文。 針對接收端的立體化處理過程而言,接收端的立體化處理過程包括以下步驟
步驟601、獲得接收到的立體消息報(bào)文的指針為P。通常,P是收到的立體消息報(bào) 文的數(shù)據(jù)指針。 步驟602、以上述公式(4)轉(zhuǎn)化立體消息報(bào)文里的緩沖區(qū)偏移為本地?cái)?shù)據(jù)指針。
步驟603、重復(fù)步驟602,直到立體消息報(bào)文主體里的數(shù)據(jù)指針全部處理完成,結(jié) 束執(zhí)行。
在具體實(shí)施過程中,將發(fā)送端的平面化過程和接收端的立體化過程封裝為兩組例 程供業(yè)務(wù)應(yīng)用層使用。 在發(fā)送端,以GetFrame ()例程實(shí)現(xiàn)內(nèi)存的動態(tài)連續(xù)分配,以YieldMessage ()最終 完成動態(tài)平面化轉(zhuǎn)換并返回動態(tài)平面化后立體消息報(bào)文的長度,以提供發(fā)送時(shí)必須的消息 長度參數(shù)。 在接收端,以PopFrame()例程轉(zhuǎn)換動態(tài)平面化后立體消息報(bào)文緩沖區(qū)內(nèi)的偏移 為指針,實(shí)現(xiàn)對接收到的動態(tài)平面化后的立體消息報(bào)文進(jìn)行的立體化。
發(fā)送端的GetFrame ()例程替代語言庫提供的malloc ()或new()等例程,保證業(yè) 務(wù)應(yīng)用層對待發(fā)送立體立體消息進(jìn)行正確的內(nèi)存分配。并內(nèi)部處理所有轉(zhuǎn)換準(zhǔn)備信息。在 使用YieldMessage ()之前,業(yè)務(wù)應(yīng)用層可以按照立體消息的定義自由操作、訪問該立體消 息。在使用YieldMessage ()之后,業(yè)務(wù)應(yīng)用層可直接發(fā)送該消息。 使用以上例程實(shí)現(xiàn)本發(fā)明,使業(yè)務(wù)應(yīng)用層在獲得使用本發(fā)明所獲得的收益的同
時(shí),又不必關(guān)心立體消息的轉(zhuǎn)換過程及其具體細(xì)節(jié),極大的簡化了業(yè)務(wù)應(yīng)用層發(fā)送立體消
息的過程,同時(shí),可以獲得由于例程對具體操作的封裝所帶來的安全性保證。 以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種發(fā)送復(fù)雜消息的方法,其特征在于,該方法包括在緩沖區(qū)上為待發(fā)送的立體消息動態(tài)分配內(nèi)存;將所述立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移后,發(fā)送所述立體消息報(bào)文。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述發(fā)送立體消息報(bào)文后還包括將立體消息報(bào)文緩沖區(qū)內(nèi)的偏移轉(zhuǎn)化為本地?cái)?shù)據(jù)指針。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述動態(tài)分配內(nèi)存為動態(tài)連續(xù)地分配內(nèi)存,并實(shí)現(xiàn)內(nèi)存分配冗余為零;在發(fā)送端,所述在緩沖區(qū)上為待發(fā)送的立體消息動態(tài)分配內(nèi)存進(jìn)一步包括為所述立體消息中的數(shù)據(jù)指針動態(tài)連續(xù)地分配內(nèi)存,以及為立體消息中數(shù)據(jù)指針?biāo)玫臄?shù)據(jù)動態(tài)連續(xù)地分配內(nèi)存。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述緩沖區(qū)的長度的計(jì)算公式為<formula>formula see original document page 2</formula>其中,Lb為緩沖區(qū)的長度;Lm為所述立體消息報(bào)文的主體的長度;N為所述立體消息中含有的數(shù)據(jù)指針的總個(gè)數(shù);Ln為第n的數(shù)據(jù)指針?biāo)玫臄?shù)據(jù)的長度。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述為立體消息中的數(shù)據(jù)指針動態(tài)連續(xù)地分配內(nèi)存,以及為立體消息中數(shù)據(jù)指針?biāo)玫臄?shù)據(jù)動態(tài)連續(xù)地分配內(nèi)存具體包括Al、通過劃分所述Lm長度的內(nèi)存,在所述緩沖區(qū)上為所述立體消息報(bào)文的主體分配內(nèi)存,記錄所述立體消息報(bào)文的指針為P ;根據(jù)L = Lm計(jì)算出當(dāng)前立體消息報(bào)文的總長度值;其中,L為所述立體消息報(bào)文的當(dāng)前的總長度;A2、從所述緩沖區(qū)的內(nèi)存的P+L位置開始,采取以下公式為Pn: :P劃分Ln長度的內(nèi)存,實(shí)現(xiàn)內(nèi)存的動態(tài)連續(xù)分配;<formula>formula see original document page 2</formula>所述公式中,Pn: :P表示所述P中的第n個(gè)數(shù)據(jù)指針;[Pn: :P]表示訪問以P。 P的值為地址的內(nèi)存單元的內(nèi)容;[P]表示訪問以P的值為地址的內(nèi)存單元的內(nèi)容;A3、緩存L值;同時(shí)根據(jù)Ln的值更新L值<formula>formula see original document page 2</formula>;公式中,Ln表示該數(shù)據(jù)指針引用數(shù)據(jù)的長度。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述將立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移之前還包括記錄所述Pn: :P在所述緩沖區(qū)內(nèi)的偏移Ipn,以及所述Pn: :P引用的數(shù)據(jù)在緩沖區(qū)內(nèi)的偏移In ;其中,所述In為所述步驟A3中緩存操作對應(yīng)的L值,并在對所述L值的緩存操作中,完成對In的記錄;所述I,采取以下公式獲得<formula>formula see original document page 2</formula>公式中,(#Pn: :P)表示取存放Pn: :P的內(nèi)存地址。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述將立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移具體為根據(jù)所述In和所述I,獲得序列(Ipn, In);將所述序列(Ipn, In)中的In值寫入相對應(yīng)的I,所引用的內(nèi)存,實(shí)現(xiàn)所述轉(zhuǎn)換,采取以下公式獲得[P+IPJ = In ;公式中,[P+Ipn]表示訪問以P+I,的值為地址的內(nèi)存單元的內(nèi)容。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述將立體消息報(bào)文緩沖區(qū)內(nèi)的偏移轉(zhuǎn)化為本地?cái)?shù)據(jù)指針具體采取以下公式獲得[#Pn: :P] = P+Pn: :P ;其中,[#Pn: :P]表示訪問以#Pn: :P的值為地址的內(nèi)存單元的內(nèi)容;#Pn: :P表示取存放Pn::P的內(nèi)存地址。
全文摘要
本發(fā)明公開了一種發(fā)送復(fù)雜消息的方法,該方法包括在緩沖區(qū)上為待發(fā)送的立體消息動態(tài)分配內(nèi)存;將所述立體消息里的數(shù)據(jù)指針轉(zhuǎn)化為立體消息報(bào)文緩沖區(qū)內(nèi)的偏移后,發(fā)送所述立體消息報(bào)文。采用本發(fā)明,不僅能實(shí)現(xiàn)立體消息報(bào)文的發(fā)送,而且消息表達(dá)簡單,避免了消息表達(dá)異構(gòu)導(dǎo)致的一系列問題。
文檔編號G06F12/02GK101753540SQ20081022793
公開日2010年6月23日 申請日期2008年12月2日 優(yōu)先權(quán)日2008年12月2日
發(fā)明者劉福財(cái), 蘇偉 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
兴宁市| 玛多县| 石台县| 伊春市| 伊宁市| 全南县| 永定县| 湟源县| 健康| 乌兰察布市| 泸西县| 改则县| 大姚县| 开化县| 枣庄市| 海盐县| 贡嘎县| 苍溪县| 岢岚县| 东明县| 清水河县| 门头沟区| 宁南县| 长治县| 普兰县| 油尖旺区| 固原市| 新平| 抚顺市| 芦山县| 山东省| 法库县| 贵阳市| 珲春市| 渑池县| 锡林浩特市| 临夏市| 游戏| 合阳县| 密山市| 瑞金市|