Home | History | Annotate | Download | only in base
      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