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