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/checks.h" 14 #include "webrtc/base/common.h" 15 16 namespace { 17 const uint32_t UPDATE_NETWORKS_MESSAGE = 1; 18 19 // This is set by NetworkMonitorFactory::SetFactory and the caller of 20 // NetworkMonitorFactory::SetFactory must be responsible for calling 21 // ReleaseFactory to destroy the factory. 22 rtc::NetworkMonitorFactory* network_monitor_factory = nullptr; 23 } // namespace 24 25 namespace rtc { NetworkMonitorInterface()26NetworkMonitorInterface::NetworkMonitorInterface() {} 27 ~NetworkMonitorInterface()28NetworkMonitorInterface::~NetworkMonitorInterface() {} 29 NetworkMonitorBase()30NetworkMonitorBase::NetworkMonitorBase() : worker_thread_(Thread::Current()) {} ~NetworkMonitorBase()31NetworkMonitorBase::~NetworkMonitorBase() {} 32 OnNetworksChanged()33void NetworkMonitorBase::OnNetworksChanged() { 34 LOG(LS_VERBOSE) << "Network change is received at the network monitor"; 35 worker_thread_->Post(RTC_FROM_HERE, this, UPDATE_NETWORKS_MESSAGE); 36 } 37 OnMessage(Message * msg)38void NetworkMonitorBase::OnMessage(Message* msg) { 39 RTC_DCHECK(msg->message_id == UPDATE_NETWORKS_MESSAGE); 40 SignalNetworksChanged(); 41 } 42 NetworkMonitorFactory()43NetworkMonitorFactory::NetworkMonitorFactory() {} ~NetworkMonitorFactory()44NetworkMonitorFactory::~NetworkMonitorFactory() {} 45 SetFactory(NetworkMonitorFactory * factory)46void NetworkMonitorFactory::SetFactory(NetworkMonitorFactory* factory) { 47 if (network_monitor_factory != nullptr) { 48 delete network_monitor_factory; 49 } 50 network_monitor_factory = factory; 51 } 52 ReleaseFactory(NetworkMonitorFactory * factory)53void NetworkMonitorFactory::ReleaseFactory(NetworkMonitorFactory* factory) { 54 if (factory == network_monitor_factory) { 55 SetFactory(nullptr); 56 } 57 } 58 GetFactory()59NetworkMonitorFactory* NetworkMonitorFactory::GetFactory() { 60 return network_monitor_factory; 61 } 62 63 } // namespace rtc 64