Task calss -- 多方面,异步的工作 被TaskRunner管理
XmppTask 处理进入的xmpp语义流, XmppClient处理所有xmpp流,并交给XmppTask处理
进入的网络流会到XmppClient中处理,调用其下 HandleStanza方法,如果能处理则返
回真,XmppClient则丢弃这个流,否则XmppClient将其丢列表中下一个处理。
子对象会根据优先级排列,优先级(buzz::XmppEngine::HandlerLevel), XmppTask的优
先级会在构造的时候确定。
如果要扩展 XmppTask, 则必须实现下面两个方法
HandleStanza 这个在ProcessStart之前调用,查看是否能处理语义流. 如果能处理
则调用 QueueStanza来处理,任务管理器将调用 ProcessStart.
ProcessStart 当HandleStanza 返回真后,此函数被任务管理器异步调用.为了给
HandleStanza 获取语义流,调用NextStanza.
XmppPump Class
高级别的 Xmpp消息组件 . 此类创建一个 XmppClient 对象,并处理登录进服务器功能
其中 DoLogin 用于登录服务器
XmppClient Class
网络与应用程序间的XMPP流的主要实体. XmppClient 实际上管理几个底层的对象,并
嵌入在XmppPump中处理登录动作. 应用程序必须创建这个对象,并嵌入XmppPump中用于
登录.
XmppEngine Class
被XmppClient管理的底层xmpp引擎. 此类实现了核心的xmpp协议. 为纯虚类,并被XmppClient
所管理. 没有啥文档描述此类,因为你不需要用到它.然而有些常量定义是要用到的,
必要时查一下即可.
VoiceChannel Class
在一个语音通话程序里,里嵌一个TransportChannel 并与MediaEngine相关联.
这个类被 ChannelManager创建,并当创建一个新会话时由 Call 对象调用. VoiceChannel
被会话所使用,蛤只用来创建TransportChannel.
VoiceChannel实际上扮演了TransportChannel和MediaChannel之间的语音数据通道,并
可用于停止或开始数据控制(静音/非静音 数据频道). 进来的数据包被TransportChannel
接收,乃是调用VoiceChannel::OnSocketRead, 然后转到MediaChannel::OnPacketReceived.
出去的数据包使用VoiceChannel::SendPacket,被TransportChannel::SendPacket调用.
如开发video,则可以参考此类为模板来制作视频媒体会话类型
StreamState Enumeration
描绘StreamInterface或其继承对象的状态
StreamResult Enumeration
描绘StreamInterface 对象上读或写操作的结果
StreamEvent Enumeration
返回StreamInterface当前流的可写状态.
StreamInterface Class
异步读写数据流的纯虚类. 这个类将被各种流类型所实现(比如文件流,内存流,隧道会
话流[tunnel session streams]). 这个类在流准备好读或写时发状态事件.其方法并不
是线程安全的,可被任何线程调用.
SessionSendTask Class
SessionManagerTask用来发送XMPP语义流的帮助性对象.
此对象会在回复收到后销毁.
此方法不是线程安全,可被任何线程调用,但你需要从信号线程中调用它.
SessionManager Class
SessionManager 创建,销毁,和路由XMPP 对应的发送和接收的独立的会话对象.
你不需要为各种会话类型扩展它.
应用程序必须创建这个对象,并连接上SignalRequestSignaling,并反馈信号,调用
OnSignalingReady.
仍然是线程不安全那句话...
SessionClient Class
这是一个纯虚类, 在XMPP,XmppSessionMessage,SessionDescription中游荡.
你必须根据你的会话类型重载它,并加上自有的逻辑特性功能.
当调用SessionManager::CreateSession时,你需要定义string名字空间来使用会话名称.
这应该是一个独特的标识的SessionClass类型.libjingle 定义两个值 NS_TUNNEL,NS_PHONE
SessionClient 在XMPP和SessionDescription对象之间传送会话管理语义流.
会话描述信息是为各种不同类型的会话的定制(比如,语音聊天的编解码和文件传输程
序的文件名),因此子类必须是专门为了能够读取或创建这些信息.参考扩展会话客户端
来支持新的会话类型.
此类线程不安全.