jain-sip 一些类的初步理解
1.javax.sip.ClientTransaction :
ClientTransaction 应 用可以理解 为发 送 INVITE 信息到 UAS 。 ClientTransaction 也用从 SipListener 接收到的回 应进 行匹配。和 ServiceTransaction 相 对应 。
方法:
ClientTransaction 的方法:
Request createAck()通 过 ClientTransaction 创 造一个 关 于当前的 请 求的正确 应 答。
void sendRequest() 用于 发 送 创 建的 请 求消息。
这 个 类 的 调 用意味着上 层 的 应 用是 UAC 。
2.javax.sip.Dialog :一个会话用来响应 2 个点对点的用户之间的联系,并保持联系一段周期。
3.javax.sip.DialogState : 这个类定义了会话的 3 种状态, Early, Confirmed, Terminated。
4.javax.sip.DialogTerminatedEvent : 当一个会话事务到达了 terminated 状态,这个会话事务事件被传送到listen监听处去。
5.javax.sip.ListeningPoint : 这个接口描述了一个唯一的网络监听地址,由传输的 IP 和端口组成。
6.javax.sip.RequestEvent : 这个类描述了一个从 SipProvider传送到SipListener的请求事件,是一种事件模式。一个应用 (sipListener)被注册到SIP protocol stack(SipProvider),监听SipProvider传来的请求事件。
7.javax.sip.ResponseEvent :这个类描述了一个从 SipProvider 到他自己的 SipListener 的一个响应事件。
8.javax.sip.ServerTransaction :
ServerTransaction 可以通常被理解 为 一个会 话 状 态 机 ,SipProvider 用来 处 理接收 SIP 事件和消息序列,将接收到消息 发 送到 SipListener( 侦 听方法 ) 的 processRequest 或者 processResponse 回 调 ,通 过 用 户 代理服 务 器 发 送回 应 信息 给应 用程序。 这 个 类让应 用程序能 发 送一个回 应对应 SipListener 收到的 请 求。
方法:
ServerTransaction 中的方法:
sendResponse应 用希望 发 送一个响 应时 候,它 创 立一个来自 MessageFactory 创 造的回 应 ,然后回 应传 送到 ServerTransaction 的 sendResponse 方法。
9.javax.sip.SipFactory:
SIPFactory 是一个 单类 ,用 单 一方式得到 这 个 SipStack 应 用的 执 行 权 。 SIPFactory 单 一的 实 例能 用得到 实 例的方法(或者 Singleton )而被得到。通 过 在 SIPFactory 里 调 用合适构造方法,一个代表被叫端的 对 象能从 SIPFactory 得到。 创 造一个被叫的 SipStack , 这样应 用将可以 调 用 SipStack 中的方法。
10.javax.sip.SipListener:这个类代表SIP协议的负责侦听的应用程序端,这个接口定义了一个侦听端,接收处理从SipProvider提交的SIP事件消息,是一个抽象的侦听线程。
结构:
每个SIPStack或每个IP地址对应一个的Siplistener,而Siplistener与SipProvider的关系是一对多的关系。
11. javax.sip.SipProvider : : 这个接口描述了 SIP stack的消息实体。
12.javax.sip.SipStack : 提供了方法创建和删除 SipProvider 和 ListeningPoint ,以便 SipProvider能发送和接收消息。
13.javax.sip.Transaction : Transaction 是一个基础的 sip 组件,这个接口描述了客户端到服务器的一个通用接口和普遍的方法。
14.javax.sip.TransactionTerminatedEvent : TransactionTerminatedEvent 被传到 Listener当事务转变到 terminated状态。
15.javax.sip.address.Address :这个接口描述了用户的 display名字和URI地址。
16.javax.sip.address.AddressFactory :这个接口提供了方法,允许程序创建地址对象,例如: URI, SipURI and TelURL。
17.javax.sip.header.ContactHeader : 一个 ContactHeader 头变量提供了包含请求或是响应的 URI 。
18. javax.sip.header.HeaderFactory : 这个接口提供了一组方法允许从一个 JAIN SIP实例中创建Header object。
19.javax.sip.header.ToHeader : To header是最初被请求的需要者所描述,Requests and Responses必须包括一个ToHeader .
20.javax.sip.message.MessageFactory : 这个接口提供了一组方法允许应用程序从一个 JAIN SIP实例中创建Request 和 Response消息。
21.javax.sip.message.Request : 一个 SIP Request是一个从客户端到服务器的请求。
22.javax.sip.message.Response : 一旦请求地接受者收到一个请求,一个 Response 消息就被发送。
****************************************************************************
我將整個架構切割成 SipStack, SipProvider, SipListener 等三個 class 或 interface 。
* SipStack 將底層 network protocol 封裝起來,供 SipProvider 使用。
* SipProvider 則提供基本的 SIP message 傳遞及分送。並將收到訊息後的對應動作委託給SipListener 處理。
* SipListener 是一個 interface ,用來傾聽 SipProvider 送來的 event ,並處理。
此外, SipHeader 被設計來剖析 SIP message 的 header。