1 /* 2 * Copyright 2015 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "webrtc/base/networkmonitor.h" 12 13 #include "webrtc/base/common.h" 14 15 namespace { 16 const uint32_t UPDATE_NETWORKS_MESSAGE = 1; 17 18 // This is set by NetworkMonitorFactory::SetFactory and the caller of 19 // NetworkMonitorFactory::SetFactory must be responsible for calling 20 // ReleaseFactory to destroy the factory. 21 rtc::NetworkMonitorFactory* network_monitor_factory = nullptr; 22 } // namespace 23 24 namespace rtc { NetworkMonitorInterface()25NetworkMonitorInterface::NetworkMonitorInterface() {} 26 ~NetworkMonitorInterface()27NetworkMonitorInterface::~NetworkMonitorInterface() {} 28 NetworkMonitorBase()29NetworkMonitorBase::NetworkMonitorBase() : thread_(Thread::Current()) {} ~NetworkMonitorBase()30NetworkMonitorBase::~NetworkMonitorBase() {} 31 OnNetworksChanged()32void NetworkMonitorBase::OnNetworksChanged() { 33 LOG(LS_VERBOSE) << "Network change is received at the network monitor"; 34 thread_->Post(this, UPDATE_NETWORKS_MESSAGE); 35 } 36 OnMessage(Message * msg)37void NetworkMonitorBase::OnMessage(Message* msg) { 38 ASSERT(msg->message_id == UPDATE_NETWORKS_MESSAGE); 39 SignalNetworksChanged(); 40 } 41 NetworkMonitorFactory()42NetworkMonitorFactory::NetworkMonitorFactory() {} ~NetworkMonitorFactory()43NetworkMonitorFactory::~NetworkMonitorFactory() {} 44 SetFactory(NetworkMonitorFactory * factory)45void NetworkMonitorFactory::SetFactory(NetworkMonitorFactory* factory) { 46 if (network_monitor_factory != nullptr) { 47 delete network_monitor_factory; 48 } 49 network_monitor_factory = factory; 50 } 51 ReleaseFactory(NetworkMonitorFactory * factory)52void NetworkMonitorFactory::ReleaseFactory(NetworkMonitorFactory* factory) { 53 if (factory == network_monitor_factory) { 54 SetFactory(nullptr); 55 } 56 } 57 GetFactory()58NetworkMonitorFactory* NetworkMonitorFactory::GetFactory() { 59 return network_monitor_factory; 60 } 61 62 } // namespace rtc 63