Ip電話中的呼叫快速查找方法
2023-05-30 08:41:21 2
專利名稱:Ip電話中的呼叫快速查找方法
技術領域:
本發明涉及IP(國際網際網路協議)電話技術領域,更確切地說是涉及IP電話中的一種呼叫控制塊的快速查找方法。
由於在每一個呼叫的過程中經常需要獲得與該呼叫相對應的呼叫控制塊,且在一特定時間內會有相當數目的呼叫存在,根據H.323協議,給每個呼叫分配一個Call ID,此Call ID能夠唯一地標識一個呼叫並且不會發生重複。一般的呼叫控制軟體都是通過Call ID來查找相應的呼叫控制塊。
根據Call ID查找呼叫控制塊的方法有很多種,最常見的是順序查找法和HASH查找法。其中的順序查找法,因為是按照Call ID順序進行對比查找,因而查找速度很慢,當呼叫數目巨大時會急劇降低整個系統的效率。
HASH查找法的查找流程如
圖1中所示,包括步驟11,開始;
步驟12,讀取有關消息(如交換機發出的被叫摘機信息中就包含有CallID),獲得Call ID;步驟13,對Call ID按HASH方法進行操作,生成一個A值(由於Call ID是一個長16個字節的字符串,通過HASH方法對其進行變短操作);步驟14,取得與A值對應的鍊表(由於對Call ID進行了變短操作,就可能有重複的A值產生,需將相同A值的呼叫控制塊進行連結,形成鍊表),在鍊表中通過比較Call ID進行順序查找,尋找與查找的Ca11 ID一致的鍊表;步驟15,判斷當前所查找的Call ID與鍊表中的Call ID是否相等;步驟16,判斷相等時,表示找到了該呼叫的呼叫控制塊(CCB);步驟18,判斷不相等時,則作錯誤處理;步驟17,結束查找過程。
HASH查找法的核心內容是將順序法查找時的全部順序轉化為部分順序,以此來提高查找速度,雖然有速度快的優點,但由於HASH操作上的固有問題,不可能保證在HASH操作後的A值絕對不重複,因此需要一個鍊表將HASH操作後具有相同A值的呼叫控制塊連結起來,從而導致過程(算法)複雜化,而且其查找過程也不能保證一次完成。
綜上所述,由於Call ID是一個長16個字節的字符串,若採用簡單的順序法進行查找,則效率非常低下;而進行HASH操作雖然速度較快,但存在HASH操作後有重複、不能一次完成以及算法較複雜的缺點。
實現本發明目的的技術方案是這樣的一種IP電話中的呼叫快速查找方法,其特徵在於包括如下處理步驟
A.創建一個從零至最大值X的呼叫數組,每一數組元素用於對應一個呼叫,每一數組元素的內容包含有與呼叫相關的所有信息,並讓數組元素的下標等於一呼叫的內部呼叫參考值(crv);B.為每一個新呼叫分配一個內部呼叫參考值(crv),該內部呼叫參考值(crv)在一時間範圍內是唯一的;C.根據內部呼叫參考值(crv)建立內部呼叫參考值(crv)與呼叫控制塊(CCB)間一一對應的映射關係;D.直接根據獲取的內部呼叫參考值(crv)一次查找到與之對應的呼叫控制塊(CCB),進行操作。
所述步驟A中,所創建的最大值為X的呼叫數組,應能容納一時間範圍內所有呼叫的內部呼叫參考值(crv)。
所述步驟A中,每一數組元素的內容至少包含有呼叫參考值(CRV)、主叫號碼、被叫號碼、通話開始時間和通話結束時間。
所述步驟B中,所述的新呼叫包括主動發起的呼叫和被動接收的呼叫。
所述步驟B的分配內部呼叫參考值(crv)進一步包括以下處理步驟a.從呼叫數組中取出上一次分配過的內部呼叫參考值(crv),對其進行加1操作;b.判斷該加1操作後的內部呼叫參考值(crv)所對應的數組元素是否是空閒的;c.在該數組元素是空閒時,將該數組元素下標的內部呼叫參考值(crv)分配給所述的新呼叫,在該數組元素不是空閒時,返回步驟a.繼續操作;d.在重複執行步驟a、b、c共(X-1)次後仍未能找到空閒的數組元素時,終止步驟B的操作。
所述數組元素的空閒是指該數組元素沒有與呼叫控制塊建立起一一對應的映射關係。
所述步驟C中,建立內部呼叫參考值(crv)與呼叫控制塊(CCB)間一一對應的映射關係,進一步包括以下步驟e.按呼叫控制塊的大小申請一個內存地址;f.將與呼叫相關的信息填入該地址的內存區域中;g.將成功分配的新呼叫的內部呼叫參考值(crv)與該內存區域間建立對應的映射關係;h.在新呼叫沒有成功分配到內部呼叫參考值(crv)時,則釋放該新呼叫及內存地址。
所述的步驟D,是從呼叫的交互信息中獲取內部呼叫參考值(crv),對內部呼叫參考值(crv)指向的呼叫控制塊內容進行操作。
所述步驟D中,是通過網絡埠號與內部呼叫參考值(crv)映射,和通過內部呼叫參考值(crv)與呼叫控制塊映射後,再對與網絡埠號映射的呼叫控制塊內容進行操作。
本發明方法的有益效果是可根據內部呼叫參考值(crv),直接通過Call[crv]獲取呼叫控制塊,一次查找就可以完成,而且相應的維護方法非常簡單,而查找空閒的crv,只需要大約10行的代碼,非常簡單,添加一個呼叫控制塊和刪除一個呼叫控制塊都可以通過直接對數組元素操作完成。
圖2是本發明根據內部呼叫參考值(crv)一次查找法的流程框圖。
圖1說明前已述及不再贅述。
參見圖2,圖中示出實施本發明方法的主要處理步驟。
步驟21,建立一個足夠大的呼叫數組,能夠容納一特定時間範圍內的所有呼叫,如長度為兩個字節、最大值為65535(X為0-65535)的呼叫數組,用於映射最大值為65535個呼叫控制塊,使每一呼叫對應呼叫數組中的一個數組元素,讓該數組元素的下標與內部呼叫參考值(crv)相等,每個數組元素包含有與呼叫相關的所有信息(呼叫參考值、主被叫號碼等),用數據結構方式進行描述,為typedeftagCCB{呼叫參考值主叫號碼被叫號碼通話開始時間通話結束時間}CCBCCB *Call[65535]。
步驟22,在每一個新呼叫到來時,不管它是被動接收的呼叫還是主動發起的呼叫,均為其新建一個內部的(或稱本地的)呼叫參考值(crv)。
傳統的呼叫參考值(CRV)的生成一般採用每有一個新呼叫則加1的方法,加到預定的最大值時返回0再從新開始。如將呼叫參考值(CRV)的範圍定得足夠大(為0-65534),以保證在同一時刻所有呼叫的CRV不重複。但是,由於實際上每個呼叫保持的時間不會是相同的,如有的呼叫時間長有的呼叫時間短,僅簡單的加1就可能導致在一定時間範圍內有重複呼叫參考值(CRV)的情況(如一個時間特長的呼叫的呼叫參考值與另一個時間短的呼叫的呼叫參考值相同)發生。
為了避免這種情況發生並能高效地生成內部的(或稱本地的)呼叫參考值(crv),本發明採用的方法是從當前的(i)內部呼叫參考值(crv)的下一個內部呼叫參考值(i+1)開始尋找,直到找到一個沒有與之對應的呼叫控制塊(CCB)的呼叫參考值(crv),即快速找到一個內部呼叫參考值為crv的空閒的呼叫數組中的一個數組元素,該空閒是指該內部呼叫參考值還沒有與呼叫控制塊間建立起一一對應的映射關係,其過程表示如下分配CRV { i=上次分配的crv while{呼叫數組的第i+1個數組元素不為空並且i+1不等於上次分配的crv} { i=i+1; } if(i+1等於上次分配的crv) { 返回失敗 }else { 上次分配的crv=i+1 返回i+1 } }。上述過程保證了當一特定時刻總的呼叫數目比65535小得多的時候,基本不會發生呼叫參考值重複的問題,因為當循環65535次之後,已經過了非常長的時間,呼叫不釋放的可能性已經非常小了,即使沒有釋放,也不可能有非常多的呼叫都不釋放,這樣就可以接續查找到下一個呼叫,效率非常高。該查找空閒的內部呼叫參考值的過程只需要大約10行的代碼,非常快速、簡單。此外,假如在循環查找65535次之後仍未找到一個沒有與呼叫控制塊對應的內部呼叫參考值時,則宣布查找失敗,終止查找。
步驟23,根據所生成的內部的呼叫參考值(crv)建立起與呼叫控制塊(CCB)間的一一對應的映射關係,具體操作過程是將一數組元素的下標設為crv,該數組元素的內容為指向呼叫控制塊的指針增加一個新的呼叫控制塊時,同時創建一個新的crv,以此crv為下標把呼叫控制塊的指針(P)寫入數組元素中。
例如對一個到來的呼叫,其映射過程如下 pCCB=申請一個CCB大小的內存(地址) 將(呼叫)相關信息填入pCCB指向的數據結構 IF(分配CRV=成功) { crv=獲得分配的CRV Call[crv]=pCCB }else { 釋放呼叫和內存 }。上述步驟是以成功分配的內部呼叫參考值為下標,直接將新呼叫的呼叫控制塊指針寫入呼叫數組的相應數組元素中。
步驟24,當呼叫狀態發生改變需要查找Call ID的呼叫控制塊時,只需要直接根據crv將數組元素的內容取出來即可,即根據crv找到與之對應的CCB,進行操作。
若在呼叫的交互數據中包含crv,就可以直接獲取crv;若在呼叫的交互數據中不包含crv,則需要根據其它信息,如SOCKET埠號(網絡埠號),再進行一次映射(網絡埠號是唯一的,使網絡埠號與呼叫參考值對應,使呼叫參考值與呼叫控制塊對應,從而使網絡埠號與呼叫控制塊對應)。
本發明推薦採用在交互數據中包含crv的方式。
具體過程如下從交互數據中獲得內部呼叫參考值,賦給變量crvpCCB=Call[crv];對pCCB所指向的內容進行操作。
本發明的方法是根據IP電話特有的特點作出的,包括創建一個能夠容納所有CRV的呼叫數組;對於所有的呼叫均創建一個內部的CRV;以內部的CRV為下標直接把新呼叫的呼叫控制塊指針寫入呼叫數組;和直接根據內部的CRV作為數組下標來獲取呼叫控制塊,經一次查找,就可快速查找到相應的呼叫(呼叫控制塊)。與傳統的順序查找法及HASH查找法相比,明顯提高了速度與效率,且過程簡單。
權利要求
1.一種IP電話中的呼叫快速查找方法,其特徵在於包括如下處理步驟A.創建一個從零至最大值X的呼叫數組,每一數組元素用於對應一個呼叫,每一數組元素的內容包含有與呼叫相關的所有信息,並讓數組元素的下標等於一呼叫的內部呼叫參考值(crv);B.為每一個新呼叫分配一個內部呼叫參考值(crv),該內部呼叫參考值(crv)在一時間範圍內是唯一的;C.根據內部呼叫參考值(crv)建立內部呼叫參考值(crv)與呼叫控制塊(CCB)間一一對應的映射關係;D.直接根據獲取的內部呼叫參考值(crv)一次查找到與之對應的呼叫控制塊(CCB),進行操作。
2.根據權利要求1所述的一種IP電話中的呼叫快速查找方法,其特徵在於所述步驟A中,所創建的最大值為X的呼叫數組,應能容納一時間範圍內所有呼叫的內部呼叫參考值(crv)。
3.根據權利要求1所述的一種IP電話中的呼叫快速查找方法,其特徵在於所述步驟A中,每一數組元素的內容至少包含有呼叫參考值(CRV)、主叫號碼、被叫號碼、通話開始時間和通話結束時間。
4.根據權利要求1所述的一種IP電話中的呼叫快速查找方法,其特徵在於所述步驟B中,所述的新呼叫包括主動發起的呼叫和被動接收的呼叫。
5.根據權利要求1所述的一種IP電話中的呼叫快速查找方法,其特徵在於所述步驟B的分配內部呼叫參考值(crv)進一步包括以下處理步驟a.從呼叫數組中取出上一次分配過的內部呼叫參考值(crv),對其進行加1操作;b.判斷該加1操作後的內部呼叫參考值(crv)所對應的數組元素是否是空閒的;c.在該數組元素是空閒時,將該數組元素下標的內部呼叫參考值(crv)分配給所述的新呼叫,在該數組元素不是空閒時,返回步驟a.繼續操作;d.在重複執行步驟a、b、c共(X-1)次後仍未能找到空閒的數組元素時,終止步驟B的操作。
6.根據權利要求5所述的一種IP電話中的呼叫快速查找方法,其特徵在於所述數組元素的空閒是指該數組元素沒有與呼叫控制塊建立起一一對應的映射關係。
7.根據權利要求1所述的一種IP電話中的呼叫快速查找方法,其特徵在於所述步驟C中,建立內部呼叫參考值(crv)與呼叫控制塊(CCB)間一一對應的映射關係,進一步包括以下步驟e.按呼叫控制塊的大小申請一個內存地址;f.將與呼叫相關的信息填入該地址的內存區域中;g.將成功分配的新呼叫的內部呼叫參考值(crv)與該內存區域間建立對應的映射關係;h.在新呼叫沒有成功分配到內部呼叫參考值(crv)時,則釋放該新呼叫及內存地址。
8.根據權利要求1所述的一種IP電話中的呼叫快速查找方法,其特徵在於所述的步驟D,是從呼叫的交互信息中獲取內部呼叫參考值(crv),對內部呼叫參考值(crv)指向的呼叫控制塊內容進行操作。
9.根據權利要求1所述的一種IP電話中的呼叫快速查找方法,其特徵在於所述步驟D中,是通過網絡埠號與內部呼叫參考值(crv)映射,和通過內部呼叫參考值(crv)與呼叫控制塊映射後,再對與網絡埠號映射的呼叫控制塊內容進行操作。
全文摘要
本發明涉及一種IP電話中的呼叫快速查找方法,在呼叫過程中可一次查找到呼叫控制塊。包括如下步驟創建一個從零至最大值X的呼叫數組,每一數組元素用於對應一個呼叫,每一數組元素的內容包含有與呼叫相關的所有信息,並讓數組元素的下標等於一呼叫的內部呼叫參考值(crv);為每一個新呼叫分配一個crv,該crv在一時間範圍內是唯一的,是從當前crv的下一個crv找起,直至找到一個沒有與之對應的呼叫控制塊的crv,將其分配給新呼叫;根據crv建立與呼叫控制塊(CCB)間一一對應的映射關係;查找呼叫時可直接根據獲取的crv一次查找到內存中與之對應的呼叫控制塊(CCB),對其進行操作。
文檔編號H04M3/42GK1399461SQ0112370
公開日2003年2月26日 申請日期2001年7月27日 優先權日2001年7月27日
發明者林海濤, 王曉蘭, 甘泉 申請人:華為技術有限公司