Sipdroid信令代码结构分析

Sipdroid信令代码结构是其实现客户端和服务器通信的基本;通过分析其结构可以很好的完成代码层次概念的学习;同时使用SIPdroid的信令代码可以实现与大部分SIP服务器的交互通信。初次写博客,如有谬误还望指正。 


TcpTransport(extends Transport: 调用TcpConnection类  ConnectedTransport类等主要功能是创建TCP连接发送数据和监听端口将得到的回复返回上层结构。

关键方法:void sendMessage(Message msg){}将上层传递到下面的消息发送到初始化的IP和端口

void onReceivedData(TcpConnection tcp_conn, byte[] data, int len){}

监听初始化IP和端口的回复消息,并将其转化为String返回给上层

 

SipProvider:public SipProvider(String via_addr, int port, String[] protocols,String ifaddr) {}初始化时建立对指定地址和端口的连接,V3平台指定端口是5070;管理SipProviderListener监听组;创建TcpTransport发送上层传递的Sip消息;从TcpTransport得到V3的回复消息,并对其进行初步的解析分析。

关键方法:

public boolean addSipProviderListener(SipProviderListener listener){}加载新的监听;

public ConnectionIdentifier sendMessage(Message msg) {}发送从上层得到的sip消息。

注意:由于要从客户端得到平台地址所以创建SipProviderSipdroidEngine处就创建实例了。

 

TransactionClient: public TransactionClient(SipProvider sip_provider, Message req,TransactionClientListener listener){}

是对SipProvider的封装,基本上就是将消息的传递到SipProvider层,主要工作时对会话回复消息的进一步处理和分析,并根据消息的code进行分类,将关键的消息(成功的消息)传递到上面的Dialog层;可能封装成不同消息类型的TransactionClient

例如InviteTranstionClientAckTransationClient

关键方法:

public void request() {}建立SipProvider监听,发送sip消息

public void onReceivedMessage(SipProvider provider, Message msg){}对会话回复消息的进一步处理和分析,并根据消息的code进行分类,将关键的消息(成功的消息)传递到上面的Dialog层;

public void onTimeout(Timer to){}对于超时的会话进行处理,根据状态重发或结束

public void terminate() {}结束传输,还原状态

 

DialogDialogClient和服务端的基本通信方式,其标识是Call-ID;该标识和remote_tag,local_tag共同标识着Client是和服务端的同一个PU进行通话的。

public class InviteDialog extends Dialog implements TransactionClientListener,InviteTransactionServerListener,AckTransactionServerListener,SipProviderListener接口代表了完成各种监听后处理函数 ;这是改写程序响应时要改的地方。

public void onReceivedMessage(SipProvider sip_provider, Message msg){}:Dialog作为SipProviderListener时的响应处理函数

public void onTransFailureResponse(TransactionClient tc, Message msg){}Dialog作为TransactionClientListener时消息是失败时的响应处理函数(消息代码是300700

public void onTransProvisionalResponse(TransactionClient tc, Message msg) :Dialog作为TransactionClientListener时回复消息代码是100200时的响应处理函数

public void onTransSuccessResponse(TransactionClient tc, Message msg){}Dialog作为TransactionClientListener时回复消息代码是200300时的响应处理函数


       显然,上述结构是从上到下的层次结构,Dialog是最上层的封装,TcpTransport是最低层的通信层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值