[Libjingle代碼分析]對(duì)照J(rèn)ingle的XMPP stanza理解Libjingle的幾個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)
1.
SessionManager管理多個(gè)Session:




每個(gè)Session在SessionManager里通過sid來區(qū)分:

通過SessionManager::CreateSession(content_type)創(chuàng)建一個(gè)Session, 每個(gè)Session對(duì)應(yīng)一個(gè)content_type:



content_type目前傳入的為"urn:xmpp:jingle:apps:rtp:1", 其實(shí)就是<content>下<description>元素的"xmlns"屬性值.
2.
一個(gè)Session管理多個(gè)Transport:




每個(gè)Transport在Session里通過content_name來區(qū)分:

通過Session::GetOrCreateTransportProxy(content_name)來創(chuàng)建一個(gè)Transport. content_name就是<content>元素的name屬性值, 如"audio", "video"等. 比如, 在視頻聊天中:






3.
一個(gè)Transport管理多個(gè)Transportchannel:




每個(gè)Transportchannel通過channel_name來區(qū)分:

通過 Transport::CreateChannel(name)創(chuàng)建一個(gè)Transport, channel_name沒有對(duì)應(yīng)的XMPP stanza, 其值有"rtp", "rtcp"等.
4.
一個(gè)TransportChannel(主要是P2PTransportChannel)管理多個(gè)Port:



Port分為StunPort, TCPPort, UDPPort等, 與<transport>元素的xmlns屬性值(如"urn:xmpp:jingle:transports:ice-udp:1")以及子元素<candidate>的protocol屬性值(如"udp")有關(guān).
5.
一個(gè)Port管理多個(gè)Connection:




6.
一個(gè)Connection包括一個(gè)local_candidate和一個(gè)remote_candidate:
class Connection




posted on 2012-07-27 14:50 楊粼波 閱讀(944) 評(píng)論(0) 編輯 收藏 引用