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 { 25 NetworkMonitorInterface::NetworkMonitorInterface() {} 26 27 NetworkMonitorInterface::~NetworkMonitorInterface() {} 28 29 NetworkMonitorBase::NetworkMonitorBase() : thread_(Thread::Current()) {} 30 NetworkMonitorBase::~NetworkMonitorBase() {} 31 32 void NetworkMonitorBase::OnNetworksChanged() { 33 LOG(LS_VERBOSE) << "Network change is received at the network monitor"; 34 thread_->Post(this, UPDATE_NETWORKS_MESSAGE); 35 } 36 37 void NetworkMonitorBase::OnMessage(Message* msg) { 38 ASSERT(msg->message_id == UPDATE_NETWORKS_MESSAGE); 39 SignalNetworksChanged(); 40 } 41 42 NetworkMonitorFactory::NetworkMonitorFactory() {} 43 NetworkMonitorFactory::~NetworkMonitorFactory() {} 44 45 void NetworkMonitorFactory::SetFactory(NetworkMonitorFactory* factory) { 46 if (network_monitor_factory != nullptr) { 47 delete network_monitor_factory; 48 } 49 network_monitor_factory = factory; 50 } 51 52 void NetworkMonitorFactory::ReleaseFactory(NetworkMonitorFactory* factory) { 53 if (factory == network_monitor_factory) { 54 SetFactory(nullptr); 55 } 56 } 57 58 NetworkMonitorFactory* NetworkMonitorFactory::GetFactory() { 59 return network_monitor_factory; 60 } 61 62 } // namespace rtc 63