免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1348 | 回复: 0
打印 上一主题 下一主题

关于在osip2里添加新的header parser需要注意的事项 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-02 11:06 |只看该作者 |倒序浏览
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.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.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。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1251/showart_121978.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP