Chinaunix首页 | 论坛 | 博客
  • 博客访问: 148482
  • 博文数量: 18
  • 博客积分: 1799
  • 博客等级: 上尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-05 20:07
文章分类

全部博文(18)

文章存档

2015年(1)

2012年(2)

2010年(1)

2009年(1)

2008年(3)

2007年(4)

2006年(3)

2005年(3)

分类: 系统运维

2006-06-02 11:06:15

osip2现在定义使用的header是33个,包括了大部分常用的header,一般来说都够用。但是需要做一些试验或实现一些还没成为标准的业务时,要用到一些新的header时,那就要自己动一下手le
当然首先要写好关于新header的一系列处理和接口函数,这个不用说,跟需要增加的header有关,这里说的是由于osip2里的header look-up机制而带来的一些注意事项。因为新版的osip2改变了header look-up机制,那么这里就分别来描述一下。
旧版的header look-up机制:osip2 parser初始化时,把header按名字(小写字母)组织成一从小到大的有序字符串数组。在做look-up的时候,采用二分查找。那么,在添加新的header时就不能破坏这个有序的header字符串数组,而必须根据这个header的名字按字符串比较规则插入到相应的数组中。如要添加一个叫join的header,那么
#define JOIN “join”
然后在parser_init函数里, 
  pconfig[i].hname = CALL_ID_SHORT;     /* "i" */
  pconfig[i++].setheader = (&osip_message_set_call_id);
  pconfig[i++].hname = JOIN;  /* "j" */
  pconfig[i++].setheader = (&osip_message_set_join); /* 你定义的处理函数 */
  pconfig[i].hname = CONTENT_LENGTH_SHORT;      /* "l" */
  pconfig[i++].setheader = (&osip_message_set_content_length);
新版的header look-up机制:osip2 parser初始化时,使用osip_hash函数根据header的名字(小写字母)构建了一张hash表。在做look-up的时候,把字符串统一成小写字符串,再做一下osip_hash就找到对应的header了。这样在添加新的header时不需要管header在数组中的次序问题。但是由于它采用的hash机制跟header的个数有关,所以在添加新的header时,就需要修改相关的hash参数了。在不改变osip_hash函数的前提下,一般的做法是修改HASH_TABLE_SIZE的值。如我我把header数加到55个时,HASH_TABLE_SIZE的值是296。
阅读(3138) | 评论(1) | 转发(0) |
0

上一篇:sipX and asterisk

下一篇:流媒体技术简述

给主人留下些什么吧!~~