亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 關(guān)于在osip2里添加新的header parser需要注意的事項(xiàng) [打印本頁(yè)]

作者: pwestly    時(shí)間: 2006-06-02 11:06
標(biāo)題: 關(guān)于在osip2里添加新的header parser需要注意的事項(xiàng)
osip2現(xiàn)在定義使用的header是33個(gè),包括了大部分常用的header,一般來(lái)說(shuō)都?jí)蛴。但是需要做一些試?yàn)或?qū)崿F(xiàn)一些還沒(méi)成為標(biāo)準(zhǔn)的業(yè)務(wù)時(shí),要用到一些新的header時(shí),那就要自己動(dòng)一下手le
當(dāng)然首先要寫(xiě)好關(guān)于新header的一系列處理和接口函數(shù),這個(gè)不用說(shuō),跟需要增加的header有關(guān),這里說(shuō)的是由于osip2里的header look-up機(jī)制而帶來(lái)的一些注意事項(xiàng)。因?yàn)樾掳娴膐sip2改變了header look-up機(jī)制,那么這里就分別來(lái)描述一下。
舊版的header look-up機(jī)制:osip2 parser初始化時(shí),把header按名字(小寫(xiě)字母)組織成一從小到大的有序字符串?dāng)?shù)組。在做look-up的時(shí)候,采用二分查找。那么,在添加新的header時(shí)就不能破壞這個(gè)有序的header字符串?dāng)?shù)組,而必須根據(jù)這個(gè)header的名字按字符串比較規(guī)則插入到相應(yīng)的數(shù)組中。如要添加一個(gè)叫join的header,那么
#define JOIN “join”
然后在parser_init函數(shù)里,  
  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); /* 你定義的處理函數(shù) */
  pconfig.hname = CONTENT_LENGTH_SHORT;      /* "l" */
  pconfig[i++].setheader = (&osip_message_set_content_length);
新版的header look-up機(jī)制:osip2 parser初始化時(shí),使用osip_hash函數(shù)根據(jù)header的名字(小寫(xiě)字母)構(gòu)建了一張hash表。在做look-up的時(shí)候,把字符串統(tǒng)一成小寫(xiě)字符串,再做一下osip_hash就找到對(duì)應(yīng)的header了。這樣在添加新的header時(shí)不需要管header在數(shù)組中的次序問(wèn)題。但是由于它采用的hash機(jī)制跟header的個(gè)數(shù)有關(guān),所以在添加新的header時(shí),就需要修改相關(guān)的hash參數(shù)了。在不改變osip_hash函數(shù)的前提下,一般的做法是修改HASH_TABLE_SIZE的值。如我我把header數(shù)加到55個(gè)時(shí),HASH_TABLE_SIZE的值是296。

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/1251/showart_121978.html




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2