读书人

libjingle源码分析之4:Session和Tran

发布时间: 2012-11-23 22:54:33 作者: rapoo

libjingle源码分析之四:Session和Transport

摘要

本文介绍了Session和Transport模块。

概述

Session、SessionClient、Transport和TransportChannel的关系如下图所示:

libjingle源码分析之4:Session和Transport

模块解析SessionClientSessionManager中,按content_type来区分不同的SessionClient,且两端的content_type必须一样。需要用户实现自己的SessionClient和content_type,并且在初始化的时候添加到SessionManager中,方便创建Session。接收端,可以等待请求端的消息,实现接收端的Session生命周期管理。Sessionsid由SessionManager创建,两端对应的sid是一样的。请求端,创建Session时,多个Session可以绑定同一个SessionClient。接收端,安照sid和from(请求端的full jid)来查找对应的Session。若Session不存在,先查看对应content_type的SessionClient是否存在,然后创建过程同请求端。Transport在Session中,用TransportProxy包装,以content_name区分。默认的实现是P2PTransport,没必要直接使用它。TransportChannel包含在Transport中,用channel_name区分。通过Session创建,需要指定content_name和channel_name(即在content_name的Transport下创建channel_name的TransportChannel)。继承于TransportChannel是TransportChannelImpl,TransportChannel的一个默认具体实现是P2PTransport。SessionManager未在图中表示。它只是一个辅助类,用来创建Session,将Session和SessionClient绑定。

读书人网 >移动开发

热点推荐