Home | History | Annotate | Download | only in p2p
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_RENDERER_P2P_IPC_NETWORK_MANAGER_H_
      6 #define CONTENT_RENDERER_P2P_IPC_NETWORK_MANAGER_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/compiler_specific.h"
     11 #include "base/memory/weak_ptr.h"
     12 #include "content/common/content_export.h"
     13 #include "content/renderer/p2p/network_list_manager.h"
     14 #include "content/renderer/p2p/network_list_observer.h"
     15 #include "third_party/webrtc/base/network.h"
     16 
     17 namespace content {
     18 
     19 // IpcNetworkManager is a NetworkManager for libjingle that gets a
     20 // list of network interfaces from the browser.
     21 class IpcNetworkManager : public rtc::NetworkManagerBase,
     22                           public NetworkListObserver {
     23  public:
     24   // Constructor doesn't take ownership of the |network_list_manager|.
     25   CONTENT_EXPORT IpcNetworkManager(NetworkListManager* network_list_manager);
     26   virtual ~IpcNetworkManager();
     27 
     28   virtual void StartUpdating() OVERRIDE;
     29   virtual void StopUpdating() OVERRIDE;
     30 
     31   // P2PSocketDispatcher::NetworkListObserver interface.
     32   virtual void OnNetworkListChanged(
     33       const net::NetworkInterfaceList& list) OVERRIDE;
     34 
     35  private:
     36   void SendNetworksChangedSignal();
     37 
     38   NetworkListManager* network_list_manager_;
     39   int start_count_;
     40   bool network_list_received_;
     41 
     42   base::WeakPtrFactory<IpcNetworkManager> weak_factory_;
     43 };
     44 
     45 }  // namespace content
     46 
     47 #endif  // CONTENT_RENDERER_P2P_IPC_NETWORK_MANAGER_H_
     48