專利名稱:一種處理多媒體消息業(yè)務(wù)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體消息業(yè)務(wù)中心(MMSC,MultimediaMessaging ServiceCenter) 業(yè)務(wù)處理技術(shù),特別是指一種處理多媒體消息業(yè)務(wù)的方法及裝置。
背景技術(shù):
多媒體消息業(yè)務(wù)是一種全新的、能夠在手機(jī)與手機(jī)之間和手機(jī)與E-mail服務(wù)器 等其它應(yīng)用之間傳送多媒體內(nèi)容的消息服務(wù)。與目前已成功應(yīng)用的文本形式的短消息業(yè)務(wù) 相比,多媒體消息業(yè)務(wù)能為用戶提供包括圖像、聲音等多種媒體格式的消息,從而使運(yùn)營(yíng)商 可以為用戶提供豐富的、個(gè)性化的服務(wù)。舉個(gè)例子來(lái)說(shuō),中國(guó)移動(dòng)提供的手機(jī)報(bào)業(yè)務(wù),改變 了傳統(tǒng)報(bào)紙的發(fā)行方式。具體地講,傳統(tǒng)的紙質(zhì)報(bào)紙需要印刷,并需要投入大量的人力和物 力將報(bào)紙投送到用戶手中,而手機(jī)報(bào)則采用彩信形式,直接將報(bào)紙內(nèi)容發(fā)送到用戶的手機(jī) 當(dāng)中,這種方式方便、快捷,而且節(jié)約了大量的社會(huì)勞動(dòng)成本。一條短消息的內(nèi)容最大只有140個(gè)字節(jié)(Bytes),通常采用商用數(shù)據(jù)庫(kù)實(shí)現(xiàn)消息 的存儲(chǔ)和管理,現(xiàn)有磁盤陣列的I/O性能可以達(dá)到每秒幾千條短消息的處理能力。但是,一 條多媒體消息的內(nèi)容要比短消息的內(nèi)容大得多,目前一般為lOOKbytes左右,而且,多媒體 消息業(yè)務(wù)的協(xié)議規(guī)范并沒(méi)有對(duì)多媒體消息內(nèi)容的大小做限制,因此,隨著終端能力的提高, 一條多媒體消息的內(nèi)容將會(huì)越來(lái)越大。由于多媒體消息業(yè)務(wù)是非實(shí)時(shí)業(yè)務(wù),所以通常的處 理方法是當(dāng)MMSC收到發(fā)起方提交的多媒體消息后,先將收到的多媒體消息存儲(chǔ)在多媒體 消息服務(wù)(MMS,Multimedia Messaging Service)存儲(chǔ)服務(wù)器中,然后再對(duì)收到的多媒體消 息進(jìn)行轉(zhuǎn)發(fā)。所述多媒體消息即為彩信。具體地,MMS存儲(chǔ)服務(wù)器收到業(yè)務(wù)處理模塊發(fā)來(lái) 的多媒體消息后,以文件的形式把彩信存儲(chǔ)在MMS存儲(chǔ)服務(wù)器中,并將彩信的索引作為用 戶數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中;完成對(duì)彩信的讀取、刪除等操作。MMS存儲(chǔ)服務(wù)器可以是網(wǎng)絡(luò)附加 存儲(chǔ)(NAS, Network AttachedStorage)、或者存儲(chǔ)局域網(wǎng)(SAN, Storage Area Network)。但是,無(wú)論MMS存儲(chǔ)服務(wù)器采用上述的哪種方式實(shí)現(xiàn),它的1/0吞吐性能都是有限 的,主要表現(xiàn)在以下兩個(gè)方面第一,磁盤的性能限制了 1/0吞吐性能?,F(xiàn)在業(yè)內(nèi)最大的磁盤轉(zhuǎn)速是15000轉(zhuǎn)/ 秒,這就在物理上限制了 1/0吞吐性能。其次,從經(jīng)濟(jì)的角度考慮,采用高性能1/0的存儲(chǔ)服務(wù)器需要較高的成本,從而從 邏輯上限制了 1/0吞吐性能。從上面的描述中可以看出,只有減少1/0操作,匪SC才能提高對(duì)彩信業(yè)務(wù)的處理速度。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種處理多媒體消息業(yè)務(wù)的方法及裝置, 能大大提高對(duì)彩信業(yè)務(wù)的處理性能,并降低匪SC對(duì)MMS存儲(chǔ)服務(wù)器的1/0吞吐性能的要 求。
5
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明提供了一種處理多媒體消息業(yè)務(wù)的方法,對(duì)cache進(jìn)行初始化處理;該方 法還包括MMSC收到業(yè)務(wù)發(fā)起方提交的彩信體后,依據(jù)cache中用于存放彩信體的存儲(chǔ)空間 循環(huán)使用的規(guī)則,將提交的彩信體依次存儲(chǔ)到cache,并向接收方終端發(fā)送獲取彩信體的通 知;MMSC收到接收方終端發(fā)送的獲取請(qǐng)求后,從cache中讀到請(qǐng)求的彩信體,并向接 收方終端返回所述請(qǐng)求的彩信體。上述方案中,該方法進(jìn)一步包括將cache中的彩信碼流同步存儲(chǔ)到物理磁盤。上述方案中,MMSC確定接收方終端已成功獲取所述請(qǐng)求的彩信體后,該方法進(jìn)一 步包括刪除cache中存儲(chǔ)的所述請(qǐng)求的彩信體。上述方案中,所述對(duì)cache進(jìn)行初始化處理具體為讀取配置文件,根據(jù)配置文件中cache對(duì)應(yīng)的標(biāo)識(shí),獲得cache的大小及彩信體的 平均大小,并計(jì)算控制節(jié)點(diǎn)的個(gè)數(shù),之后創(chuàng)建cache;確定創(chuàng)建成功后,將cache映射到進(jìn)程空間中;將cache中的控制節(jié)點(diǎn)的索引信息初始化為零,并在cache中生成一個(gè)空閑的控 制節(jié)點(diǎn)隊(duì)列;將獲得的空閑的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)的地址寫入cache的第二個(gè)單元中;并將 獲得的全局指針(CurPtr)存入cache的第二個(gè)單元。上述方案中,所述將提交的彩信體依次存儲(chǔ)到cache,具體為從空閑的控制節(jié)點(diǎn)隊(duì)列中取得一個(gè)空閑的控制節(jié)點(diǎn);判斷cache中用于存儲(chǔ)彩信碼流的存儲(chǔ)空間是否為第一次使用、或二次以上循環(huán) 使用,確定是第一次使用時(shí),判斷cache中用于存儲(chǔ)彩信碼流的剩余存儲(chǔ)空間是否能存儲(chǔ) 下本次需要存儲(chǔ)的彩信碼流,確定能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流時(shí),將本次需要存儲(chǔ) 的彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更新;確定不能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流時(shí),將CurPtr移至cache存放彩信碼 流的初始位置,判斷當(dāng)前能使用的存儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,確定 能存儲(chǔ)下時(shí),將本次需要存儲(chǔ)的彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更 新;確定當(dāng)前能使用的存儲(chǔ)空間不能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流時(shí),判斷已使用 的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物理磁盤,確定已同步到物理磁盤 時(shí),刪除首節(jié)點(diǎn)信息,相應(yīng)的,更新紅黑樹數(shù)據(jù)庫(kù)、以及CurPtr ;再次判斷當(dāng)前能使用的存 儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,如此循環(huán),直至將本次需要存儲(chǔ)的彩信碼 流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更新。上述方案中,該方法還包括確定cache中用于存儲(chǔ)彩信碼流的存儲(chǔ)空間是二次以上循環(huán)使用時(shí),判斷當(dāng)前能 使用的存儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,確定能存儲(chǔ)下時(shí),將本次需要存儲(chǔ)的彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更新;確定當(dāng)前能使用的存儲(chǔ)空間不能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流時(shí),判斷已使用 的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物理磁盤,確定已同步到物理磁盤 時(shí),刪除首節(jié)點(diǎn)信息,相應(yīng)的,更新紅黑樹數(shù)據(jù)庫(kù)、以及CurPtr ;判斷當(dāng)前的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流在cache中的地址是否等于cache中存放彩 信碼流的初始地址,確定等于時(shí),再次判斷cache中用于存儲(chǔ)彩信碼流的剩余存儲(chǔ)空間是 否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,如此循環(huán),直至將本次需要存儲(chǔ)的彩信碼流寫入到 CurPtr指示的地址,并進(jìn)行相關(guān)信息的更新;確定當(dāng)前的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流在cache中的地址不等于cache中存放彩信 碼流的初始地址時(shí),再次判斷當(dāng)前能使用的存儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼 流,如此循環(huán),直至將本次需要存儲(chǔ)的彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信 息的更新。上述方案中,所述從cache中讀到請(qǐng)求的彩信體,具體為匪SC收到接收方終端發(fā)送的包含網(wǎng)頁(yè)地址(URL)的鏈接的獲取請(qǐng)求后,根據(jù)URL 獲得相應(yīng)彩信體對(duì)應(yīng)的msgid ;通過(guò)所述msgid查找紅黑樹數(shù)據(jù)庫(kù)中所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn),獲得彩信碼流 在cache中的地址及長(zhǎng)度;將彩信碼流從cache中讀出,并向接收方終端返回所述請(qǐng)求的彩信體。上述方案中,所述將cache中的彩信碼流同步存儲(chǔ)到物理磁盤,具體為定時(shí)器超時(shí)后,判斷已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步 到物理磁盤,確定沒(méi)有同步到物理磁盤時(shí),將該節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流存儲(chǔ)到物理磁盤,并將 彩信碼流已同步到物理磁盤的標(biāo)識(shí)寫入該節(jié)點(diǎn)信息,同時(shí)更新紅黑樹數(shù)據(jù)庫(kù)對(duì)應(yīng)的節(jié)點(diǎn)信 息;確定已同步到物理磁盤時(shí),或者,同步過(guò)程執(zhí)行完成后,處理下一個(gè)節(jié)點(diǎn);判斷是否處理到已使用的控制節(jié)點(diǎn)隊(duì)列的最后一個(gè)控制節(jié)點(diǎn),確定不是時(shí),判斷 同步過(guò)程執(zhí)行的時(shí)間是否超過(guò)預(yù)設(shè)閾值,確定超過(guò)時(shí),結(jié)束同步過(guò)程。上述方案中,所述刪除cache中存儲(chǔ)的所述請(qǐng)求的彩信體,具體為MMSC判斷出接收方終端已成功獲取所述請(qǐng)求的彩信體,通過(guò)所述請(qǐng)求的彩信體對(duì) 應(yīng)的msgid,查找紅黑樹數(shù)據(jù)庫(kù)中所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn);確定能找到時(shí),判斷所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)信息中的接收地址是否是單目的 地址;確定控制節(jié)點(diǎn)信息中的接收地址是單目的地址時(shí),判斷所述msgid對(duì)應(yīng)的控制節(jié) 點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物理磁盤,確定控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流沒(méi)有同步到物理 磁盤時(shí),將彩信碼流已同步到物理磁盤的標(biāo)識(shí)寫入所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)信息,相應(yīng) 的,更新cache中的相應(yīng)的控制節(jié)點(diǎn)信息。本發(fā)明還提供了一種處理多媒體消息業(yè)務(wù)的裝置,該裝置包括初始化單元、 cache、處理單元、以及發(fā)送單元;其中,初始化單元,用于對(duì)cache進(jìn)行初始化處理;處理單元,用于MMSC收到業(yè)務(wù)發(fā)起方提交的彩信體后,依據(jù)cache中用于存放彩信體的存儲(chǔ)空間循環(huán)使用的規(guī)則,將提交的彩信體依次存儲(chǔ)到CaChe,并向接收方終端發(fā)送獲取彩信體的通知;
發(fā)送單元,用于MMS(收到接收方終端發(fā)送的獲取請(qǐng)求后,從CaChe中讀到請(qǐng)求的彩信體,并向接收方終端返回所述請(qǐng)求的彩信體;
CaChe,用于被初始化單元進(jìn)行初始化處理,并存儲(chǔ)業(yè)務(wù)發(fā)起方提交的彩信體。
上述方案中,該裝置進(jìn)一步包括
同步單元,用于將CaChe中存儲(chǔ)的彩信碼流同步存儲(chǔ)到物理磁盤;
物理磁盤,用于存儲(chǔ)彩信碼流。
本發(fā)明提供的處理多媒體消息業(yè)務(wù)的方法及裝置,MMS(收到業(yè)務(wù)發(fā)起方提交的彩信體后,依據(jù)CaChe中用于存放彩信體的存儲(chǔ)空間循環(huán)使用的規(guī)則,將提交的彩信體依次存儲(chǔ)到CaChe中,并向接收方終端發(fā)送獲取彩信體的通知;MMS(收到接收方終端發(fā)送的獲取請(qǐng)求后,從CaChe中讀到請(qǐng)求的彩信體,并向接收方終端返回所述請(qǐng)求的彩信體,如此,能減少對(duì)存儲(chǔ)設(shè)備的工/。讀操作;
另一方面,在接收方終端成功獲取彩信體后,將彩信碼流已同步到物理磁盤的標(biāo)識(shí)寫入所述mSgid對(duì)應(yīng)的控制節(jié)點(diǎn)信息中,相應(yīng)的,更新CaChe中的相應(yīng)的控制節(jié)點(diǎn)信息,彩信碼流已同步到物理磁盤的標(biāo)識(shí)寫入控制節(jié)點(diǎn)信息后,所述mSgid對(duì)應(yīng)的控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流即為無(wú)效碼流,不需要存入存儲(chǔ)設(shè)備中,如此,能減少對(duì)存儲(chǔ)設(shè)備的工/。寫操作。
圖l為本發(fā)明處理多媒體消息業(yè)務(wù)的方法流程示意 圖2為實(shí)現(xiàn)圖l所示流程圖中步驟lOO的方法流程示意 圖4為實(shí)現(xiàn)圖l所示流程圖中步驟102的方法流程示意 圖5為本發(fā)明MMS(確定接收方終端已成功獲取所述請(qǐng)求的彩信體后的方法流程示意 圖6為本發(fā)明將CaChe中的彩信碼流同步存儲(chǔ)到物理磁盤的方法流程示意 圖7為處理多媒體消息業(yè)務(wù)的裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
現(xiàn)有MMS(處理彩信業(yè)務(wù)的模式是先存儲(chǔ)再轉(zhuǎn)發(fā)的模式,即對(duì)業(yè)務(wù)發(fā)起方提交的彩信,MMS(首先需要將彩信體存儲(chǔ)到存儲(chǔ)設(shè)備,然后再下發(fā)一個(gè)包含URL的鏈接的通告給接收方終端,接收方終端通過(guò)URL的鏈接到MMS(獲取彩信體。MMS(收到接收方終端發(fā)來(lái)的獲取請(qǐng)求后,將彩信體從存儲(chǔ)設(shè)備上讀取出來(lái),返回給接收方終端,從而完成彩信的業(yè)務(wù)流程。因此,本發(fā)明的基本思想是對(duì)業(yè)務(wù)發(fā)起方提交的彩信體,暫時(shí)先將彩信體存儲(chǔ)到cache中,當(dāng)MMSC收到接收方終端發(fā)來(lái)的獲取請(qǐng)求后,直接從cache中找到彩信體,返回給 接收方終端,如此,可以減少對(duì)存儲(chǔ)設(shè)備的I/O讀操作;另一方面,在接收方終端成功獲取 彩信體后,MMSC觸發(fā)一條在cache中刪除該彩信體的信令,如此,可以減少對(duì)存儲(chǔ)設(shè)備的1/ 0寫操作。下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。本發(fā)明處理多媒體消息業(yè)務(wù)的方法如
圖1所示,包括以下步驟步驟100 對(duì)cache進(jìn)行初始化處理。步驟101 :MMSC收到業(yè)務(wù)發(fā)起方提交的彩信體后,依據(jù)cache中用于存放彩信體的 存儲(chǔ)空間循環(huán)使用的規(guī)則,將提交的彩信體依次存儲(chǔ)到cache,并向接收方終端發(fā)送獲取彩 信體的通知。步驟102 匪SC收到接收方終端發(fā)送的獲取請(qǐng)求后,從cache中讀到請(qǐng)求的彩信 體,并向接收方終端返回所述請(qǐng)求的彩信體。其中,步驟100的實(shí)現(xiàn)過(guò)程如圖2所示,包括以下步驟步驟201 讀取配置文件,根據(jù)配置文件中cache對(duì)應(yīng)的標(biāo)識(shí)(key),獲得cache的 大小及彩信體的平均大小,并計(jì)算控制節(jié)點(diǎn)的個(gè)數(shù),之后創(chuàng)建cache ;這里,所述配置文件包括cache對(duì)應(yīng)的key、cache的大小、以及彩信體的平均大 小等;配置文件要預(yù)先配置,在配置時(shí),根據(jù)匪SC的服務(wù)器系統(tǒng)內(nèi)存的大小配置cache的大 小,并為cache設(shè)置一個(gè)對(duì)應(yīng)的key,以便能根據(jù)key找到關(guān)于cache的配置參數(shù),所述配置 參數(shù)包括Kache的大小、以及彩信體的平均大小等。一般,彩信體的平均大小可以根據(jù)經(jīng) 驗(yàn)進(jìn)行設(shè)置,比如現(xiàn)網(wǎng)中彩信體的平均大小約為20k,因此,可以配置彩信體的平均大小 約為20k ;根據(jù)cache的大小及彩信體的平均大小便能夠計(jì)算出控制節(jié)點(diǎn)的個(gè)數(shù),每個(gè)控制 節(jié)點(diǎn)對(duì)應(yīng)一條彩信體,有多少個(gè)控制節(jié)點(diǎn)就代表cache最多能存放的彩信體數(shù)目;創(chuàng)建cache可以通過(guò)調(diào)用操作系統(tǒng)的創(chuàng)建子系統(tǒng)完成,并在創(chuàng)建完成后會(huì)返回創(chuàng) 建成功還是失敗的結(jié)果;創(chuàng)建時(shí),cache的第一個(gè)單元用于存放已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)的地址,第 二個(gè)單元用于存放空閑的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)的地址,第三個(gè)單元用于存放CurPtr,緊 接著的地址用于存放控制節(jié)點(diǎn)信息,控制節(jié)點(diǎn)信息存放完后的地址到cache的尾部用于存 放彩信碼流,彩信碼流為彩信體的具體內(nèi)容;所述CurPtr,用于指示當(dāng)前cache中能寫彩信 碼流的起始位置;其中,第一個(gè)單元與第二個(gè)單元存放的內(nèi)容可以稱為控制節(jié)點(diǎn)的索引信 息;如此創(chuàng)建,可以根據(jù)索引信息迅速找到對(duì)應(yīng)的控制節(jié)點(diǎn),相應(yīng)的,根據(jù)找到的控制 節(jié)點(diǎn)可以迅速地找到控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流。步驟202 判斷創(chuàng)建是否成功,如果成功,則執(zhí)行步驟203,否則,執(zhí)行步驟208。創(chuàng)建成功后,已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)的地址會(huì)存放在cache的第一個(gè)單 元中,空閑的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)的地址會(huì)存放在cache的第二個(gè)單元中。步驟203 將cache映射到進(jìn)程空間中,之后執(zhí)行步驟204 ;這里,將cache映射到進(jìn)程空間中后,cache對(duì)應(yīng)的進(jìn)程就可以訪問(wèn)cache中的內(nèi) 容。步驟204 將cache中的控制節(jié)點(diǎn)的索引信息初始化為零,并在cache中生成一個(gè)
9空閑的控制節(jié)點(diǎn)隊(duì)列;步驟205 206:空閑的控制節(jié)點(diǎn)隊(duì)列生成后,將獲得的空閑的控制節(jié)點(diǎn)隊(duì)列的首 節(jié)點(diǎn)的地址存入cache的第二個(gè)單元;并將獲得的CurPtr寫入cache的第二個(gè)單元,結(jié)束 初始化過(guò)程;此時(shí),CurPtr為cache中能寫彩信碼流的初始地址;由于此時(shí)只有空閑的控制節(jié)點(diǎn)隊(duì)列,所以不會(huì)創(chuàng)建紅黑樹數(shù)據(jù)庫(kù)。步驟207:出錯(cuò)退出。其中,上面描述的創(chuàng)建cache的過(guò)程,是指在MMSC的服務(wù)器系統(tǒng)內(nèi)的初次創(chuàng)建;當(dāng) MMSC的服務(wù)器系統(tǒng)發(fā)生斷電、或死機(jī)后重等情況后,也需要重新創(chuàng)建cache,此時(shí),cache中 存儲(chǔ)的信息不會(huì)在MMSC的服務(wù)器系統(tǒng)斷電、或死機(jī)后重啟等條件下發(fā)生消失,因此,同樣 需要執(zhí)行步驟201 203,之后創(chuàng)建紅黑樹數(shù)據(jù)庫(kù),并將CurPtr存入cache的第三個(gè)單元, 結(jié)束初始化過(guò)程;其中,紅黑樹數(shù)據(jù)庫(kù)中存放的數(shù)據(jù)包括每個(gè)彩信體的彩信碼流的長(zhǎng)度、相應(yīng)的彩 信碼流在cache中的地址、彩信體對(duì)應(yīng)的key、群發(fā)標(biāo)識(shí)、以及彩信碼流已同步到物理磁盤 的標(biāo)識(shí)等;其中,彩信體對(duì)應(yīng)的key為彩信體的msgid,每個(gè)彩信體的msgid是不相同的,因 此,每個(gè)彩信體對(duì)應(yīng)的key也不相同,如此,在索引所需的彩信體時(shí)不會(huì)出錯(cuò);紅黑樹數(shù)據(jù) 庫(kù)中存放的數(shù)據(jù)與cache中控制節(jié)點(diǎn)信息相同,即控制節(jié)點(diǎn)信息包括彩信碼流的長(zhǎng)度、 彩信碼流在cache中的地址、群發(fā)標(biāo)識(shí)、彩信體對(duì)應(yīng)的key、以及彩信碼流已同步到物理磁 盤的標(biāo)識(shí)等;其中,key是用于索引彩信體的;創(chuàng)建紅黑樹數(shù)據(jù)庫(kù)的目的是為了接收方終端在獲取彩信時(shí),能根據(jù)紅黑樹數(shù)據(jù)庫(kù) 的數(shù)據(jù),在cache中快速檢索到要獲取的彩信體;紅黑樹數(shù)據(jù)庫(kù)中的數(shù)據(jù)隨著cache中控制節(jié)點(diǎn)信息的變化動(dòng)態(tài)發(fā)生變化,與 cache中控制節(jié)點(diǎn)信息同步;并且,在MMSC相應(yīng)的服務(wù)器系統(tǒng)斷電、或死機(jī)重啟后,紅黑樹 數(shù)據(jù)庫(kù)中的數(shù)據(jù)也隨之消失;根據(jù)cache中已使用的控制節(jié)點(diǎn)隊(duì)列的尾節(jié)點(diǎn)信息中的地址、以及彩信體的彩信 碼流的長(zhǎng)度、即可計(jì)算出CurPtr。上述過(guò)程中,步驟101的實(shí)現(xiàn)過(guò)程如圖3所示,包括以下步驟步驟301 匪SC收到業(yè)務(wù)發(fā)起方提交的彩信體后,從空閑的控制節(jié)點(diǎn)隊(duì)列中取得 一個(gè)空閑的控制節(jié)點(diǎn),之后執(zhí)行步驟302 ;這里,如果從空閑的控制節(jié)點(diǎn)隊(duì)列中不能得到一個(gè)空閑的控制節(jié)點(diǎn),說(shuō)明cache 所存的彩信體已滿,此時(shí),MMSC可以直接將提交的彩信體存儲(chǔ)到物理磁盤。步驟302 判斷cache中用于存儲(chǔ)彩信碼流的存儲(chǔ)空間是否為第一次使用,如果 是,則執(zhí)行步驟303,否則,執(zhí)行步驟305 ;這里,判斷cache中用于存儲(chǔ)彩信碼流的存儲(chǔ)空間是否為第一次使用,具體 為從已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)信息中獲取對(duì)應(yīng)的彩信碼流在cache中的地址 (HeadPtr),判斷HeadPtr是否小于CurPtr,如果HeadPtr小于CurPtr,則說(shuō)明cache中用 于存儲(chǔ)彩信碼流的存儲(chǔ)空間是第一次使用,如果HeadPtr大于等于CurPtr,則說(shuō)明cache中 用于存儲(chǔ)彩信碼流的存儲(chǔ)空間不是第一次使用,而是二次以上的循環(huán)使用。步驟303 判斷cache中用于存儲(chǔ)彩信碼流的剩余存儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,如果是,則執(zhí)行步驟309 ;否則,執(zhí)行步驟304 ;這里,所述判斷cache中用于存儲(chǔ)彩信碼流的剩余存儲(chǔ)空間是否能存儲(chǔ)下本次需 要存儲(chǔ)的彩信碼流,具體為CurPtr到cache尾部的長(zhǎng)度是否大于本次需要存儲(chǔ)的彩信碼流的長(zhǎng)度(Len),如 果大于,則說(shuō)明cache中用于存儲(chǔ)彩信碼流的剩余存儲(chǔ)空間能存儲(chǔ)下本次需要存儲(chǔ)的彩信 碼流,否則,說(shuō)明cache中用于存儲(chǔ)彩信碼流的剩余存儲(chǔ)空間不能存儲(chǔ)下本次需要存儲(chǔ)的 彩信碼流;當(dāng)cache中用于存儲(chǔ)彩信碼流的存儲(chǔ)空間為第一次使用時(shí),要從用于存儲(chǔ)彩信碼 流的存儲(chǔ)空間的初始位置依次存放彩信碼流,在存放彩信碼流之前,需要判斷CurPtr到 cache尾部的空間是否能放得下當(dāng)前需要存儲(chǔ)的彩信碼流;如果小于,說(shuō)明CurPtr到cache尾部的空間放不下本次需要存儲(chǔ)的彩信碼流,需 要將CurPtr移至cache存放彩信碼流的初始位置。步驟304 將CurPtr移至cache存放彩信碼流的初始位置,之后執(zhí)行步驟305。步驟305 判斷當(dāng)前能使用的存儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流, 如果是,則執(zhí)行步驟309,否則,執(zhí)行步驟306 ;這里,所述判斷當(dāng)前能使用的存儲(chǔ)空間是否能存放存儲(chǔ)下本次需要存儲(chǔ)的彩信 碼流,具體為判斷CurPtr-HeadPtr是否大于等于本次需要存儲(chǔ)的彩信碼流的Len,如果 CurPtr-HeadPtr大于等于本次需要存儲(chǔ)的彩信碼流的Len,則說(shuō)明CurPtr到HeadPtr之 間緩存區(qū)的大小,即當(dāng)前能使用的存儲(chǔ)空間,可以存放本次需要存儲(chǔ)的彩信碼流;如果小 于,則說(shuō)明CurPtr到HeadPtr之間的存儲(chǔ)空間,即當(dāng)前能使用的存儲(chǔ)空間,不足以存放本 次需要存儲(chǔ)的彩信碼流,需要對(duì)原先存儲(chǔ)的已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼 流進(jìn)行覆蓋。步驟306 判斷已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物 理磁盤,如果是,則執(zhí)行步驟307,否則,執(zhí)行步驟310 ;這里,所述判斷已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物 理磁盤,具體為從已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)信息中獲取彩信碼流已同步到物理磁 盤的標(biāo)識(shí),如果能獲取到,則說(shuō)明首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流已同步到物理磁盤,如果不能獲取 到,則說(shuō)明首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流沒(méi)有同步到物理磁盤;如果已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流已同步到物理磁盤,則說(shuō)明 已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流可以被覆蓋。步驟307:刪除該控制節(jié)點(diǎn)信息,相應(yīng)的,更新紅黑樹數(shù)據(jù)庫(kù)、以及CurPtr,之后執(zhí) 行步驟308 ;這里,所述刪除、更新,具體為從已使用的控制節(jié)點(diǎn)的隊(duì)列刪除該控制節(jié)點(diǎn)信息,清空后將該控制節(jié)點(diǎn)插入到空 閑的控制節(jié)點(diǎn)的隊(duì)列中,同時(shí),根據(jù)msgid,從紅黑樹數(shù)據(jù)庫(kù)中刪除對(duì)應(yīng)的控制節(jié)點(diǎn)信息,并 更新 CurPtr ;該控制節(jié)點(diǎn)信息被刪除后,已使用的控制節(jié)點(diǎn)的隊(duì)列的第二個(gè)控制節(jié)點(diǎn)會(huì)成為新 的首節(jié)點(diǎn),相應(yīng)的,cache中的控制節(jié)點(diǎn)的索引信息也會(huì)發(fā)生變化,換句話說(shuō),cache中的控 制節(jié)點(diǎn)的索引信息及CurPtr會(huì)隨著控制節(jié)點(diǎn)的信息及控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流的變化而發(fā)生變化。步驟308 判斷當(dāng)前的HeadPtr是否等于cache中存放彩信碼流的初始地址,如果 等于,執(zhí)行步驟303,否則,執(zhí)行步驟305 ;這里,如果當(dāng)前的HeadPtr等于cache中存放彩信碼流的初始地址,說(shuō)明有效的彩 信碼流已經(jīng)轉(zhuǎn)到cache可以存放彩信碼流的初始位置,向cache繼續(xù)寫彩信碼流的話不存 在覆蓋原先有效的彩信碼流的問(wèn)題;所述有效的彩信碼流是指還未同步到物理磁盤的彩信碼流,即彩信碼流對(duì)應(yīng)的 控制節(jié)點(diǎn)信息中沒(méi)有彩信碼流已同步到物理磁盤的標(biāo)識(shí);已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流被覆蓋后,可使用的存放 空間不一定能存儲(chǔ)得下本次需要存儲(chǔ)的彩信碼流,因此,需要執(zhí)行步驟305,再次判斷 CurPtr-HeadPtr是否大于等于本次需要存儲(chǔ)的彩信碼流的Len,此時(shí),HeadPtr為已使用的 控制節(jié)點(diǎn)的隊(duì)列的第二個(gè)控制節(jié)點(diǎn)對(duì)應(yīng)的存放彩信碼流的地址。步驟309 將本次需要存儲(chǔ)的彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信 息的更新;這里,所述進(jìn)行相關(guān)信息的更新,具體為將與本次需要存儲(chǔ)的彩信碼流的相關(guān)信息寫入控制節(jié)點(diǎn),之后將所述控制節(jié)點(diǎn)加 入到已使用的控制節(jié)點(diǎn)隊(duì)列,相應(yīng)的,將控制節(jié)點(diǎn)信息插入到紅黑樹數(shù)據(jù)庫(kù)中,并使CurPtr 移動(dòng)至CurPtr+Len的地址;本步驟動(dòng)作執(zhí)行完,說(shuō)明本次在cache中的存儲(chǔ)成功。步驟310 將本次需要存儲(chǔ)的彩信碼流存儲(chǔ)到物理磁盤;此時(shí),說(shuō)明本次在cache中的存儲(chǔ)失敗。上述過(guò)程中,步驟102的實(shí)現(xiàn)過(guò)程如圖4所示,包括以下步驟步驟401 匪SC收到接收方終端發(fā)送的包含URL的鏈接的獲取請(qǐng)求后,根據(jù)URL獲 得相應(yīng)彩信體對(duì)應(yīng)的msgid ;這里,匪SC事先存儲(chǔ)URL及URL相應(yīng)的彩信體對(duì)應(yīng)的msgid。步驟402 通過(guò)所述msgid查找紅黑樹數(shù)據(jù)庫(kù)中所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn),獲得 彩信碼流在cache中的地址及長(zhǎng)度,之后執(zhí)行步驟403 ;這里,如果通過(guò)所述msgid沒(méi)有查找紅黑樹數(shù)據(jù)庫(kù)中所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn), 說(shuō)明在獲取之前,彩信碼流已經(jīng)被同步到物理磁盤中了,此時(shí),需要根據(jù)msgid找到彩信碼 流對(duì)應(yīng)的文件路徑,通過(guò)文件路徑,從物理磁盤中讀出彩信碼流,并向接收方終端返回所述 請(qǐng)求的彩信體。步驟403 將彩信碼流從cache中讀出,并向接收方終端返回所述請(qǐng)求的彩信體。MMSC確定接收方終端已成功獲取所述請(qǐng)求的彩信體后,可以刪除cache中存儲(chǔ)的 所述請(qǐng)求的彩信體,如圖5所示,具體包括以下步驟步驟501 匪SC判斷出接收方終端已成功獲取所述請(qǐng)求的彩信體,通過(guò)所述請(qǐng)求 的彩信體對(duì)應(yīng)的msgid,查找紅黑樹數(shù)據(jù)庫(kù)中所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn),如果能找到,則 執(zhí)行步驟502,如果不能找到,則不做任何處理,結(jié)束當(dāng)前處理流程;這里,接收方終端成功獲取所述請(qǐng)求的彩信體后,會(huì)向MMSC返回一個(gè)已獲取的信 息,所述已獲取的信息可以是用戶話單,MMSC據(jù)此可以知道接收方終端已成功獲取所述請(qǐng)求的彩信體。步驟502 判斷所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)信息中的接收地址是否是單目的地址, 如果是,則執(zhí)行步驟503,否則,不做任何處理,結(jié)束當(dāng)前處理流程;這里,如果是多目的地址,則不能根據(jù)一次獲取情況刪除緩存中的彩信碼流,此 時(shí),應(yīng)不再做任何處理,結(jié)束當(dāng)前處理流程。步驟503 判斷所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物理磁 盤,如果是,則不做任何處理,結(jié)束當(dāng)前處理流程,否則,執(zhí)行步驟504 ;這里,所述判斷所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物理磁 盤,具體為從所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)信息中獲取彩信碼流已同步到物理磁盤的標(biāo)識(shí), 如果能獲取到,則說(shuō)明所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流已同步到物理磁盤,如 果不能獲取到,則說(shuō)明所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流沒(méi)有同步到物理磁盤。步驟504 將彩信碼流已同步到物理磁盤的標(biāo)識(shí)寫入所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn) 信息中,相應(yīng)的,更新cache中的相應(yīng)的控制節(jié)點(diǎn)信息,結(jié)束當(dāng)前處理流程;這里,彩信碼流已同步到物理磁盤的標(biāo)識(shí)寫入控制節(jié)點(diǎn)信息后,表明所述請(qǐng)求的 彩信碼流為無(wú)效碼流,可以被其它后續(xù)存儲(chǔ)的彩信碼流覆蓋;彩信碼流已同步到物理磁盤的標(biāo)識(shí)寫入控制節(jié)點(diǎn)信息后,所述msgid對(duì)應(yīng)的控制 節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流即為無(wú)效碼流,不需要存入物理磁盤中。上述方案中,還可以包括將cache中的彩信碼流同步存儲(chǔ)到物理磁盤的過(guò)程,如 圖6所示,包括以下過(guò)程步驟601 開啟定時(shí)器,定時(shí)器超時(shí)后,執(zhí)行步驟602 ;這里,定時(shí)器的時(shí)長(zhǎng)可以依據(jù)需要設(shè)置,為了使同步存儲(chǔ)能快速進(jìn)行,可以設(shè)置定 時(shí)器的時(shí)長(zhǎng)為1秒。步驟602 判斷已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物 理磁盤,如果是,則執(zhí)行步驟603,否則,執(zhí)行步驟604 ;這里,所述判斷已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物 理磁盤,具體為從已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)信息中獲取彩信碼流已同步到物理磁 盤的標(biāo)識(shí),如果能獲取到,則說(shuō)明首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流已同步到物理磁盤,如果不能獲取 到,則說(shuō)明首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流沒(méi)有同步到物理磁盤。步驟603 處理下一個(gè)節(jié)點(diǎn),判斷已使用的控制節(jié)點(diǎn)隊(duì)列的下一個(gè)節(jié)點(diǎn)對(duì)應(yīng)的彩 信碼流是否已同步到物理磁盤,如果是,則執(zhí)行步驟605,否則,執(zhí)行步驟604。步驟604:將該節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流存儲(chǔ)到物理磁盤,并將彩信碼流已同步到物 理磁盤的標(biāo)識(shí)寫入該節(jié)點(diǎn)信息,同時(shí)更新紅黑樹數(shù)據(jù)庫(kù)對(duì)應(yīng)的節(jié)點(diǎn)信息,之后執(zhí)行步驟 605 ;步驟605 判斷是否處理到已使用的控制節(jié)點(diǎn)隊(duì)列的最后一個(gè)控制節(jié)點(diǎn),如果是, 則結(jié)束同步過(guò)程,否則,執(zhí)行步驟606。步驟606 判斷同步過(guò)程執(zhí)行的時(shí)間是否超過(guò)預(yù)設(shè)閾值,如果是,則結(jié)束同步過(guò) 程,否則,執(zhí)行步驟603;這里,在實(shí)際應(yīng)用過(guò)程中,定時(shí)器可以一直處于開啟狀態(tài),超時(shí)后,則執(zhí)行步驟602 至605 ;這種情況下,需要記錄同步過(guò)程執(zhí)行的時(shí)間,以免影響下一次超時(shí)后的同步處理過(guò)程;此時(shí),可以根據(jù)定時(shí)器的時(shí)長(zhǎng)設(shè)置閾值,舉個(gè)例子來(lái)說(shuō),假設(shè)定時(shí)器的時(shí)長(zhǎng)設(shè)為1秒,則 閾值的大小可以設(shè)為900毫秒,也就是說(shuō),閾值的大小要小于定時(shí)器的時(shí)長(zhǎng)。為實(shí)現(xiàn)上述方法,本發(fā)明還提供了一種處理多媒體消息業(yè)務(wù)的裝置,如圖7所示, 該裝置包括初始化單元71、cache72、處理單元73、以及發(fā)送單元74 ;其中,初始化單元71,用于對(duì)CaChe72進(jìn)行初始化處理;處理單元73,用于MMSC收到業(yè)務(wù)發(fā)起方提交的彩信體后,依據(jù)cache中用于存放 彩信體的存儲(chǔ)空間循環(huán)使用的規(guī)則,將提交的彩信體依次存儲(chǔ)到cache72,并向接收方終端 發(fā)送獲取彩信體的通知;發(fā)送單元74,用于MMSC收到接收方終端發(fā)送的獲取請(qǐng)求后,從CaChe72中讀到請(qǐng) 求的彩信體,并向接收方終端返回所述請(qǐng)求的彩信體;CaChe72,用于被初始化單元71進(jìn)行初始化處理,并存儲(chǔ)業(yè)務(wù)發(fā)起方提交的彩信 體。其中,該裝置還可以包括刪除單元75,用于MMSC確定出接收方終端已成功獲取所述請(qǐng)求的彩信體后,刪除 cache72中存儲(chǔ)的所述請(qǐng)求的彩信體;和/或,同步單元76,用于將CaChe72中存儲(chǔ)的彩信碼流同步存儲(chǔ)到物理磁盤77 ;物理磁盤77,用于存儲(chǔ)彩信碼流。所述處理單元73,還用于在確定CaChe72無(wú)法存儲(chǔ)提交的彩信體后,將提交的彩 信體存儲(chǔ)到物理磁盤77 ;所述發(fā)送單元74,還用于在確定CaChe72中沒(méi)有請(qǐng)求的彩信體后,從物理磁盤77 中讀到請(qǐng)求的彩信體,并向接收方終端返回所述請(qǐng)求的彩信體。這里,本發(fā)明的所述裝置中的各個(gè)單元的具體處理過(guò)程已在上文中詳述,不再贅 述。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在 本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù) 范圍之內(nèi)。
權(quán)利要求
一種處理多媒體消息業(yè)務(wù)的方法,其特征在于,對(duì)cache進(jìn)行初始化處理;該方法還包括多媒體消息業(yè)務(wù)中心(MMSC)收到業(yè)務(wù)發(fā)起方提交的彩信體后,依據(jù)cache中用于存放彩信體的存儲(chǔ)空間循環(huán)使用的規(guī)則,將提交的彩信體依次存儲(chǔ)到cache,并向接收方終端發(fā)送獲取彩信體的通知;MMSC收到接收方終端發(fā)送的獲取請(qǐng)求后,從cache中讀到請(qǐng)求的彩信體,并向接收方終端返回所述請(qǐng)求的彩信體。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括將cache中的彩信碼流同步存儲(chǔ)到物理磁盤。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,MMSC確定接收方終端已成功獲取所 述請(qǐng)求的彩信體后,該方法進(jìn)一步包括刪除cache中存儲(chǔ)的所述請(qǐng)求的彩信體。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述對(duì)cache進(jìn)行初始化處理具體為讀取配置文件,根據(jù)配置文件中cache對(duì)應(yīng)的標(biāo)識(shí),獲得cache的大小及彩信體的平均 大小,并計(jì)算控制節(jié)點(diǎn)的個(gè)數(shù),之后創(chuàng)建cache ;確定創(chuàng)建成功后,將cache映射到進(jìn)程空間中;將cache中的控制節(jié)點(diǎn)的索引信息初始化為零,并在cache中生成一個(gè)空閑的控制節(jié) 點(diǎn)隊(duì)列;將獲得的空閑的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)的地址寫入cache的第二個(gè)單元中;并將獲得 的全局指針(CurPtr)存入cache的第二個(gè)單元。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述將提交的彩信體依次存儲(chǔ)到 cache,具體為從空閑的控制節(jié)點(diǎn)隊(duì)列中取得一個(gè)空閑的控制節(jié)點(diǎn);判斷cache中用于存儲(chǔ)彩信碼流的存儲(chǔ)空間是否為第一次使用、或二次以上循環(huán)使 用,確定是第一次使用時(shí),判斷cache中用于存儲(chǔ)彩信碼流的剩余存儲(chǔ)空間是否能存儲(chǔ)下 本次需要存儲(chǔ)的彩信碼流,確定能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流時(shí),將本次需要存儲(chǔ)的 彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更新;確定不能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流時(shí),將CurPtr移至cache存放彩信碼流的初 始位置,判斷當(dāng)前能使用的存儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,確定能存儲(chǔ) 下時(shí),將本次需要存儲(chǔ)的彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更新;確定當(dāng)前能使用的存儲(chǔ)空間不能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流時(shí),判斷已使用的控 制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物理磁盤,確定已同步到物理磁盤時(shí), 刪除首節(jié)點(diǎn)信息,相應(yīng)的,更新紅黑樹數(shù)據(jù)庫(kù)、以及CurPtr ;再次判斷當(dāng)前能使用的存儲(chǔ)空 間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,如此循環(huán),直至將本次需要存儲(chǔ)的彩信碼流寫 入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更新。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,該方法還包括確定cache中用于存儲(chǔ)彩信碼流的存儲(chǔ)空間是二次以上循環(huán)使用時(shí),判斷當(dāng)前能使用 的存儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,確定能存儲(chǔ)下時(shí),將本次需要存儲(chǔ)的彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更新;確定當(dāng)前能使用的存儲(chǔ)空間不能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流時(shí),判斷已使用的控 制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物理磁盤,確定已同步到物理磁盤時(shí), 刪除首節(jié)點(diǎn)信息,相應(yīng)的,更新紅黑樹數(shù)據(jù)庫(kù)、以及CurPtr ;判斷當(dāng)前的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流在cache中的地址是否等于cache中存放彩信碼流 的初始地址,確定等于時(shí),再次判斷cache中用于存儲(chǔ)彩信碼流的剩余存儲(chǔ)空間是否能存 儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,如此循環(huán),直至將本次需要存儲(chǔ)的彩信碼流寫入到CurPtr 指示的地址,并進(jìn)行相關(guān)信息的更新;確定當(dāng)前的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流在cache中的地址不等于cache中存放彩信碼流的 初始地址時(shí),再次判斷當(dāng)前能使用的存儲(chǔ)空間是否能存儲(chǔ)下本次需要存儲(chǔ)的彩信碼流,如 此循環(huán),直至將本次需要存儲(chǔ)的彩信碼流寫入到CurPtr指示的地址,并進(jìn)行相關(guān)信息的更 新。
7.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述從cache中讀到請(qǐng)求的彩信體, 具體為MMSC收到接收方終端發(fā)送的包含網(wǎng)頁(yè)地址(URL)的鏈接的獲取請(qǐng)求后,根據(jù)URL獲得 相應(yīng)彩信體對(duì)應(yīng)的msgid ;通過(guò)所述msgid查找紅黑樹數(shù)據(jù)庫(kù)中所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn),獲得彩信碼流在 cache中的地址及長(zhǎng)度;將彩信碼流從cache中讀出,并向接收方終端返回所述請(qǐng)求的彩信體。
8.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將cache中的彩信碼流同步存儲(chǔ)到物 理磁盤,具體為定時(shí)器超時(shí)后,判斷已使用的控制節(jié)點(diǎn)隊(duì)列的首節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流是否已同步到物 理磁盤,確定沒(méi)有同步到物理磁盤時(shí),將該節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流存儲(chǔ)到物理磁盤,并將彩信 碼流已同步到物理磁盤的標(biāo)識(shí)寫入該節(jié)點(diǎn)信息,同時(shí)更新紅黑樹數(shù)據(jù)庫(kù)對(duì)應(yīng)的節(jié)點(diǎn)信息; 確定已同步到物理磁盤時(shí),或者,同步過(guò)程執(zhí)行完成后,處理下一個(gè)節(jié)點(diǎn); 判斷是否處理到已使用的控制節(jié)點(diǎn)隊(duì)列的最后一個(gè)控制節(jié)點(diǎn),確定不是時(shí),判斷同步 過(guò)程執(zhí)行的時(shí)間是否超過(guò)預(yù)設(shè)閾值,確定超過(guò)時(shí),結(jié)束同步過(guò)程。
9.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述刪除cache中存儲(chǔ)的所述請(qǐng)求的彩信 體,具體為MMSC判斷出接收方終端已成功獲取所述請(qǐng)求的彩信體,通過(guò)所述請(qǐng)求的彩信體對(duì)應(yīng)的 msgid,查找紅黑樹數(shù)據(jù)庫(kù)中所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn);確定能找到時(shí),判斷所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)信息中的接收地址是否是單目的地址;確定控制節(jié)點(diǎn)信息中的接收地址是單目的地址時(shí),判斷所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)對(duì) 應(yīng)的彩信碼流是否已同步到物理磁盤,確定控制節(jié)點(diǎn)對(duì)應(yīng)的彩信碼流沒(méi)有同步到物理磁盤 時(shí),將彩信碼流已同步到物理磁盤的標(biāo)識(shí)寫入所述msgid對(duì)應(yīng)的控制節(jié)點(diǎn)信息,相應(yīng)的,更 新cache中的相應(yīng)的控制節(jié)點(diǎn)信息。
10.一種處理多媒體消息業(yè)務(wù)的裝置,其特征在于,該裝置包括初始化單元、cache, 處理單元、以及發(fā)送單元;其中,初始化單元,用于對(duì)cache進(jìn)行初始化處理;處理單元,用于MMSC收到業(yè)務(wù)發(fā)起方提交的彩信體后,依據(jù)cache中用于存放彩信體 的存儲(chǔ)空間循環(huán)使用的規(guī)則,將提交的彩信體依次存儲(chǔ)到cache,并向接收方終端發(fā)送獲取 彩信體的通知;發(fā)送單元,用于MMSC收到接收方終端發(fā)送的獲取請(qǐng)求后,從cache中讀到請(qǐng)求的彩信 體,并向接收方終端返回所述請(qǐng)求的彩信體;cache,用于被初始化單元進(jìn)行初始化處理,并存儲(chǔ)業(yè)務(wù)發(fā)起方提交的彩信體。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,該裝置進(jìn)一步包括 刪除單元,用于MMSC確定出接收方終端已成功獲取所述請(qǐng)求的彩信體后,刪除cache 中存儲(chǔ)的所述請(qǐng)求的彩信體;和/或,同步單元,用于將cache中存儲(chǔ)的彩信碼流同步存儲(chǔ)到物理磁盤; 物理磁盤,用于存儲(chǔ)彩信碼流。
全文摘要
本發(fā)明公開了一種處理多媒體消息業(yè)務(wù)的方法,包括對(duì)cache進(jìn)行初始化處理;多媒體消息業(yè)務(wù)中心(MMSC)收到業(yè)務(wù)發(fā)起方提交的彩信體后,依據(jù)cache中用于存放彩信體的存儲(chǔ)空間循環(huán)使用的規(guī)則,將提交的彩信體依次存儲(chǔ)到cache,并向接收方終端發(fā)送獲取彩信體的通知;MMSC收到接收方終端發(fā)送的獲取請(qǐng)求后,從cache中讀到請(qǐng)求的彩信體,并向接收方終端返回所述請(qǐng)求的彩信體。本發(fā)明同時(shí)公開了一種處理多媒體消息業(yè)務(wù)的裝置,采用本發(fā)明的方法及裝置,能減少對(duì)存儲(chǔ)設(shè)備的I/O讀與寫操作。
文檔編號(hào)H04W4/12GK101854603SQ201010199238
公開日2010年10月6日 申請(qǐng)日期2010年6月9日 優(yōu)先權(quán)日2010年6月9日
發(fā)明者張恒生 申請(qǐng)人:中興通訊股份有限公司