CN1399461A - Ip电话中的呼叫快速查找方法 - Google Patents
Ip电话中的呼叫快速查找方法 Download PDFInfo
- Publication number
- CN1399461A CN1399461A CN 01123703 CN01123703A CN1399461A CN 1399461 A CN1399461 A CN 1399461A CN 01123703 CN01123703 CN 01123703 CN 01123703 A CN01123703 A CN 01123703A CN 1399461 A CN1399461 A CN 1399461A
- Authority
- CN
- China
- Prior art keywords
- crv
- calling
- reference value
- call
- call reference
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种IP电话中的呼叫快速查找方法,在呼叫过程中可一次查找到呼叫控制块。包括如下步骤:创建一个从零至最大值X的呼叫数组,每一数组元素用于对应一个呼叫,每一数组元素的内容包含有与呼叫相关的所有信息,并让数组元素的下标等于一呼叫的内部呼叫参考值(crv);为每一个新呼叫分配一个crv,该crv在一时间范围内是唯一的,是从当前crv的下一个crv找起,直至找到一个没有与之对应的呼叫控制块的crv,将其分配给新呼叫;根据crv建立与呼叫控制块(CCB)间一一对应的映射关系;查找呼叫时可直接根据获取的crv一次查找到内存中与之对应的呼叫控制块(CCB),对其进行操作。
Description
技术领域
本发明涉及IP(国际互联网协议)电话技术领域,更确切地说是涉及IP电话中的一种呼叫控制块的快速查找方法。
背景技术
在IP电话的网关、网守及其相关设备中,一般需为每个呼叫分配一个呼叫控制块(CCB),用于保存与该呼叫相关的所有信息,包括呼叫参考值(CRV)、呼叫标识(Call ID)、主叫号码,被叫号码、呼叫开始时间、通话开始时间、源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电话特有的特点,为IP电话中的呼叫提供一种简单快速的查找方法,能够快速地一次查找到与Call ID对应的呼叫控制块,且过程简单。
实现本发明目的的技术方案是这样的:一种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行的代码,非常简单,添加一个呼叫控制块和删除一个呼叫控制块都可以通过直接对数组元素操作完成。
附图说明
图1是传统的HASH查找法流程框图。
图2是本发明根据内部呼叫参考值(crv)一次查找法的流程框图。
具体实施方式
下面结合实施例及附图进一步说明本发明的技术方案。
图1说明前已述及不再赘述。
参见图2,图中示出实施本发明方法的主要处理步骤。
步骤21,建立一个足够大的呼叫数组,能够容纳一特定时间范围内的所有呼叫,如长度为两个字节、最大值为65535(X为0-65535)的呼叫数组,用于映射最大值为65535个呼叫控制块,使每一呼叫对应呼叫数组中的一个数组元素,让该数组元素的下标与内部呼叫参考值(crv)相等,每个数组元素包含有与呼叫相关的所有信息(呼叫参考值、主被叫号码等),用数据结构方式进行描述,为:
typedef tagCCB{
呼叫参考值
主叫号码
被叫号码
通话开始时间
通话结束时间
}CCB
CCB *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的方式。
具体过程如下:
从交互数据中获得内部呼叫参考值,赋给变量crv
pCCB=Call[crv];
对pCCB所指向的内容进行操作。
本发明的方法是根据IP电话特有的特点作出的,包括:创建一个能够容纳所有CRV的呼叫数组;对于所有的呼叫均创建一个内部的CRV;以内部的CRV为下标直接把新呼叫的呼叫控制块指针写入呼叫数组;和直接根据内部的CRV作为数组下标来获取呼叫控制块,经一次查找,就可快速查找到相应的呼叫(呼叫控制块)。与传统的顺序查找法及HASH查找法相比,明显提高了速度与效率,且过程简单。
Claims (9)
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)与呼叫控制块映射后,再对与网络端口号映射的呼叫控制块内容进行操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011237031A CN1175653C (zh) | 2001-07-27 | 2001-07-27 | Ip电话中的呼叫快速查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011237031A CN1175653C (zh) | 2001-07-27 | 2001-07-27 | Ip电话中的呼叫快速查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1399461A true CN1399461A (zh) | 2003-02-26 |
CN1175653C CN1175653C (zh) | 2004-11-10 |
Family
ID=4665229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011237031A Expired - Fee Related CN1175653C (zh) | 2001-07-27 | 2001-07-27 | Ip电话中的呼叫快速查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1175653C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101873238A (zh) * | 2010-06-29 | 2010-10-27 | 中兴通讯股份有限公司 | 实现呼叫控制协议和媒体控制协议关联的方法及监测设备 |
CN109246385A (zh) * | 2018-11-01 | 2019-01-18 | 苏州科达科技股份有限公司 | 用于多方会议的通信方法及会议系统 |
-
2001
- 2001-07-27 CN CNB011237031A patent/CN1175653C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101873238A (zh) * | 2010-06-29 | 2010-10-27 | 中兴通讯股份有限公司 | 实现呼叫控制协议和媒体控制协议关联的方法及监测设备 |
CN101873238B (zh) * | 2010-06-29 | 2015-06-03 | 中兴通讯股份有限公司 | 实现呼叫控制协议和媒体控制协议关联的方法 |
CN109246385A (zh) * | 2018-11-01 | 2019-01-18 | 苏州科达科技股份有限公司 | 用于多方会议的通信方法及会议系统 |
CN109246385B (zh) * | 2018-11-01 | 2020-08-28 | 苏州科达科技股份有限公司 | 用于多方会议的通信方法及会议系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1175653C (zh) | 2004-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1251151C (zh) | 压缩数据包的方法 | |
CN1305274C (zh) | 用于处理分组的方法和装置 | |
CN1852309A (zh) | 数据同步处理方法及其客户端 | |
CN1975680A (zh) | 基于Java的进程间异步通信的实现方法 | |
CN1870767A (zh) | 对定时器任务进行管理的方法 | |
CN101075910A (zh) | 一种快速注册的方法及装置 | |
CN1928850A (zh) | 基于数据字典的数据压缩方法、装置 | |
CN1878164A (zh) | E.164号码域名存储和查询方法 | |
CN1917667A (zh) | 群发短消息业务中的号码处理系统及处理方法 | |
CN1933454A (zh) | 一种基于java消息服务的同步消息接口实现方法 | |
CN1713173A (zh) | 计算机可实现的字符集转换方法及系统 | |
CN101060337A (zh) | 一种优化的霍夫曼解码方法和装置 | |
CN1175653C (zh) | Ip电话中的呼叫快速查找方法 | |
CN1951017A (zh) | 一种顺序压缩/解压缩数据的方法及装置 | |
CN1889462A (zh) | 实现网管和网元配置操作的方法与系统 | |
CN1905570A (zh) | 一种多级远端无线设备的标识方法及装置 | |
CN100341270C (zh) | 基于消息的分布式平台的客户端反映任务进度的方法 | |
CN1129281C (zh) | 利用缓存技术提高ip报文转发速度的方法 | |
CN1885774A (zh) | 在通信设备间产生相同随机数的方法及系统 | |
CN1874306A (zh) | 因特网协议首部压缩的上下文表项老化处理方法及装置 | |
CN1317874C (zh) | 提供虚拟主机服务快速查询置换的网络地址端口转换网关器与方法 | |
CN1859251A (zh) | 一种实现通信单元互连的方法 | |
CN1870708A (zh) | 一种话单传送方法、话单传送系统及交换设备 | |
CN101075308A (zh) | 一种编辑电子邮件的方法 | |
CN1669288A (zh) | 通过存储器查找来确定数据关键字与规则的一致性的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20041110 Termination date: 20110727 |