Resiprocate源代码分析

协议栈的层次

SIP协议是应用层(Application-Layer)的协议,所以不需要改变操作系统便可以支持。SIP已经成为3G的标准。

下面是SIP的分层图示,不同模块之间功能相对独立,各层之间松散耦合。

 

Resiprocate源代码分析_第1张图片

关于ResiProcate的设计

Resiprocate中大部分类就是对RFC3261各种元素、组件的封装,并且也体现了RFC协议设计的层次。

在面向对象的设计中,我们首先要厘清问题域的所在,SIP Stack的设计就是要充分考虑完整展现RFC定义

的各种元素和概念以及让这些独立而又关联的元素互动起来成为一个活动系统

比如:RFC定义了一个SIP MESSAGE的概念

SIP消息 = 起始行

                           *消息头部

         CRLF(空行)

         [消息体]

Resiprocate源代码分析_第2张图片

 

因此SIPMessage这个概念元素还包括了更多的元素和概念;SIP Message中我们能抽

象出更通用的概念我们暂且叫它Message; 起始行的概念E文Request Line以及StatusLine又包括了很多消息头(这是包容的关系),

SIPURL也包括消息头,等等,还有什么参数什么的元素呢;当我们在考虑和提炼这些概念和元素的时候,我们思考怎么抽象他们呢,

它们又有什么基本的元素及其共性呢?他们之间的关系如何组织呢?Resiprocate的源码告诉了我们如何去设计和封装这些概念的

上佳实现。

在Resiprocate中一些RFC3261中定义元素的对应:

Resiprocate源代码分析_第3张图片

 

SIP STACK分析

1.Resiprocate SIP STACK系统架构图示

Resiprocate源代码分析_第4张图片

Resiprocate源代码分析_第5张图片

 

Resiprocate源代码分析_第6张图片

2.FIFO流的走向图

Resiprocate源代码分析_第7张图片

 

Resiprocate源代码分析_第8张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(resiprocate源码分析)