Webrtc创建网络监听器的代码流程

1. 建立通话前的网络相关处理

PeerConnection::Initialize
PeerConnection::InitializePortAllocator_n
port_allocator_->SetConfiguration(
PortAllocator::SetConfiguration
PortAllocatorSession* BasicPortAllocator::CreateSessionInternal
BasicPortAllocatorSession::BasicPortAllocatorSession
BasicNetworkManager::StartUpdating()
BasicNetworkManager::StartNetworkMonitor() 
ndroidNetworkMonitorFactory::CreateNetworkMonitor()
AndroidNetworkMonitor::Start()
startMonitoring
AndroidNetworkMonitor::SetNetworkInfos
AndroidNetworkMonitor::OnNetworkConnected_w

2. 为每个network生成port流程

PortAllocator::SetConfiguration
pooled_session->StartGettingPorts()
network_thread_->Post(RTC_FROM_HERE, this, MSG_CONFIG_START);
BasicPortAllocatorSession::GetPortConfigurations()
BasicPortAllocatorSession::OnAllocate()
BasicPortAllocatorSession::DoAllocate()

 

3. 网络变更需

NetworkMonitorAutoDetect类的connectionTypeChanged
NetworkMonitorBase::OnNetworksChanged()
NetworkMonitorBase::OnMessage
SignalNetworksChanged
BasicNetworkManager::OnNetworksChanged
BasicNetworkManager::UpdateNetworksOnce
SignalNetworksChanged
BasicPortAllocatorSession::OnNetworksChanged()
移除网络

AllocationSequence::OnNetworkFailed
PrunePortsAndRemoveCandidates
SignalIceRegathering

 

备注:

//每种端口在分配时,会根据相应的协议获取Condidate将会通过SignalCandidatesReady信号通知到上层!
//BasicPortAllocatorSession::SignalCandidatesReady==>
//P2PTransportChannel::OnCandidatesReady==>P2PTransportChannel::SignalCandidateGathered==>
//Transport::OnChannelCandidateGathered==>Transport::SignalCandidatesGathered==>
//TransportController::OnTransportCandidatesGathered_w==>TransportController::SignalCandidatesGathered==>
//WebRtcSession::OnTransportControllerCandidatesGathered==> ice_observer_->OnIceCandidate(&candidate);
//最终会调用应用层实现的IceObserver.OnIceCandidate
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章