- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
复旦光华之exosip-publish
eXosip之publish
2010-12-07 13:22
publish客户端在osip库中的生存期:
客户端会是用来发送publish请求消息。在eXpublish_api.c文件中,调用eXosip_build_publish()函数,构造一个osip_message_t*结构的消息体,通过函数eXosip_publish (osip_message_t * message, const char *to)发送出去,这里的的第二个参数to,是用来指明这个publish消息是谁的。与服务端不同的是,在客户端里面有一个管理publish消息的结构(eXosip_pub_t),每一个to,对应一个eXosip_pub_t结构,在这个结构中包含了以下信息
struct eXosip_pub_t{
int p_id;
int p_period; /* delay between registration 也就是在publish消息中的Expires头域值*/
char p_aor[256]; /* sip identity对应第二个参数const char *to */
char p_sip_etag[64]; /* sip_etag from 200ok 在客户端收到服务端的200Ok时,用其中的SIP-Etag头域值填充该字段*/
osip_transaction_t *p_last_tr;/*代表当前或者最后一个的事务结构指针*/
int p_retry;
eXosip_pub_t *next;
eXosip_pub_t *parent;
};
从最后两个字段来看,在osip库中,其实是用一个链表来管理所有用户的publish消息(也就是全局eXosip-j_pub来管理,当然此时是为空的,不一会儿这里将有一个publish消息要发送,此时会分配一个eXosip_pub_t结构给这个用户,因为这里第一个,所以这里eXosip-j_pub就指向了这个用户的eXosip_put_t结构,也就是说这个用户将会是在j_pub链表上的第一个用户,当这里有另一个用户B上来时,会将B的eXosip_pub_t结构加入到eXosip-j_pub链表中去,在这条链表中,查找用户的KEY就是结构中的p_aor字段。所以当B再一次发送时,就会在j_pub链表中找到一个eXosip_put_t的结构,然后只需要更新这个结构的某些字段即可,而不需要再分配亲的结构了)。这里可以先说下不同用户上来和相同用来上来,eXosip_pub_t结构的链表的变化。当用户A发送publish请求消息到服务端,首先会用to去eXosip-j_pub链表中查找有没有对应于用户A的eXosip_pub_t结构,这里是没有的(A第一次上来),所以会分配一个新的结构(这个过程中,会填充p_aor, p_period,p_id值),然后把这个结构添加到eXosip-j_pub链表中去,然后创建一个事务,这里会有个判断,看p_last_tr是否空,如果是不为空,则会将这个事务发到eXosip-j_transactions链表中去,等待释放事务,然后将p_last_tr指向新创建的事务;否则,将p_last_tr指向新创建的事务。这里用户A是第一次,所以会直接指向新的事务。等了一会儿,用户再来一次publish,这时就在eXosip-j_pub链表中能够找到用户A(根据p_aor字段),然后就会用p_sip_etag字段来填充这次的publish消息SIP-If-Match头域,同时将p_period字段值赋予当前这次publish消息中的Expires头域值,然后分配一个新的事务,由于用户A对应的eXosip_pub_t结构中p_last_tr是指向上一次publish消息产生的事务结构,所以在这里,先将上次的事务添加到eXosip-j_transactions链表中,等待释放事务,然后再将p_last_tr指向新分配的事务结构。publish在客户端几乎就是这种流程了。
下面将以一个完整的publish流程来举例说明下publish在osip库中的生存期。
step 1: 用户A initial publish
在应用程序中,调用函数 eXosip_build_publish (osip_message_t ** message, const char *to, const char *from, const char *route, const char *event, const char *expires, const char *
您可能关注的文档
- 嘉年华服饰专卖店培训-赢在终端之专卖店标准服务流程.pdf
- 四个能力验收标准(行业特殊要求).doc
- 四个能力验收标准(公共部分).doc
- 四十期中小学校长培训班.doc
- 四、IDG Capital. Apr2015 - edited.ppt
- 四团中学 周丽花 农村学校初三数学分类推进教学法初探.doc
- 四团小学《七彩之梦——儿童绘画》方案推行简介.doc
- 商品交易所 菜油分析师必备知识指南.ppt
- 四期TSI系统检修规程.doc
- 四期DEH系统检修规程.doc
- 2025至2030中国标准件行业发展分析及发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030车载冰箱市场行业市场深度研究及发展前景投资可行性分析报告.docx
- 2025至2030家纺市场发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030中国细菌检测行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030全球及中国汽车滤油器行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030全球及中国业务文档工作流程管理行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030边缘计算市场发展现状分析及发展前景预测报告.docx
- 2025至2030软磁材料行业市场深度调研及发展趋势与行业项目调研及市场前景预测评估报告.docx
- 2025至2030软饮料产业政府战略管理与区域发展战略研究咨询报告.docx
- 2025至2030轨道检查仪行业项目调研及市场前景预测评估报告.docx
文档评论(0)