最近在看pjsip关于协议栈部分的代码,在CSDN上也找到了一些介绍资料
现在将个人的一些理解分享下,可能和官方的一些说法有些差异
但也是个人在某个角度的看法,希望可以给后面需要用到的朋友提供一点帮助。
先吐点口水:
总体来讲pjsip的代码还算好理解,至少比我们自己写的业务代码要好看多了。
只不过刚开始接触的时候,会有点感觉无从下手,尤其是提供的那个帮助手册,说的概念有点多,反倒把人给绕晕了。
另外其代码风格和逻辑有点别扭,个人觉得有下面几个原因:
1、硬套RFC标准里面的概念。ps:拿代码和标准文档对照着看,还是挺有帮助的。
2、之前作者是C++开发的协议栈,转换成C后,有些套路仍旧是C++的风格。
3、不是一个人开发全部,不同的人毕竟还是有不同的细节,比如说evsub。
4、思维差异,个人觉得国内的程序员在开发时,思维偏业务逻辑,线性的,一环套一环。
老外的偏代码架构,层级的。
————————————————————————————————————————————————
口水吐完进入正题。
理解pjsip协议栈这部分的代码,可以从两个维度着手:一个是代码结构,一个是处理逻辑。
一、从代码结构上走,endpoint是其总入口、根节点、主线、扛把子,以及之类的,
通过其展开了两个子节点(理解上的划分,不是代码的实际处理):module和transport
1、module用于处理SIP消息结构,