OpenSIPs与kamalio主要实现SIP信令的代理、路由等VoIP相关业务 ,其中OpenSIPs核心事务模块TM数据结构采用Hash实现事务实体的快速增、删、改、查等操作,其中entrys为Hash表的入口数组结构实现,根据_hash键值实现数据结构的访问,通过双向链表方式实现冲突处理。
struct s_table
{
struct entry entrys[ TM_TABLE_ENTRIES ];
};
处理新的呼叫时,在内联函数new_t函数完成cell的创建之后,调用insert_into_hash_table_unsafe( struct cell * p_cell, unsigned int _hash )处理函数中实现了cell的h链表尾部插入操作。
插入完成之后调用init_new_t实现对新建cell相关属性的记录,例如根据sip_msg完成对关键字段from、To,callleg等字段的初始化。