天天看點

Resiprocate源代碼分析

協定棧的層次

SIP協定是應用層(Application-Layer)的協定,是以不需要改變作業系統便可以支援。SIP已經成為3G的标準。

下面是SIP的分層圖示,不同子產品之間功能相對獨立,各層之間松散耦合。

Resiprocate源代碼分析

關于ResiProcate的設計

Resiprocate中大部分類就是對RFC3261各種元素、元件的封裝,并且也展現了RFC協定設計的層次。

在面向對象的設計中,我們首先要厘清問題域的所在,SIP Stack的設計就是要充分考慮完整展現RFC定義

的各種元素和概念以及讓這些獨立而又關聯的元素互動起來成為一個活動系統

比如:RFC定義了一個SIP MESSAGE的概念

SIP消息 = 起始行

                           *消息頭部

         CRLF(空行)

         [消息體]

Resiprocate源代碼分析

是以SIPMessage這個概念元素還包括了更多的元素和概念;SIP Message中我們能抽

象出更通用的概念我們暫且叫它Message; 起始行的概念E文Request Line以及StatusLine又包括了很多消息頭(這是包容的關系),

SIPURL也包括消息頭,等等,還有什麼參數什麼的元素呢;當我們在考慮和提煉這些概念和元素的時候,我們思考怎麼抽象他們呢,

它們又有什麼基本的元素及其共性呢?他們之間的關系如何組織呢?Resiprocate的源碼告訴了我們如何去設計和封裝這些概念的

上佳實作。

在Resiprocate中一些RFC3261中定義元素的對應:

Resiprocate源代碼分析

SIP STACK分析

1.Resiprocate SIP STACK系統架構圖示

Resiprocate源代碼分析
Resiprocate源代碼分析
Resiprocate源代碼分析

2.FIFO流的走向圖

Resiprocate源代碼分析
Resiprocate源代碼分析

繼續閱讀