pepper_network_manager.h revision 68043e1e95eeb07d5cae7aca370b26518b0867d6
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 REMOTING_CLIENT_PLUGIN_PEPPER_NETWORK_MANAGER_H_ 6#define REMOTING_CLIENT_PLUGIN_PEPPER_NETWORK_MANAGER_H_ 7 8#include "base/compiler_specific.h" 9#include "base/memory/weak_ptr.h" 10#include "ppapi/cpp/instance_handle.h" 11#include "ppapi/cpp/network_monitor.h" 12#include "ppapi/utility/completion_callback_factory.h" 13#include "third_party/libjingle/source/talk/base/network.h" 14 15namespace pp { 16class NetworkList; 17} // namespace pp 18 19namespace remoting { 20 21// PepperNetworkManager uses the PPB_NetworkMonitor API to 22// implement the NetworkManager interface that libjingle uses to 23// monitor the host system's network interfaces. 24class PepperNetworkManager : public talk_base::NetworkManagerBase { 25 public: 26 PepperNetworkManager(const pp::InstanceHandle& instance); 27 virtual ~PepperNetworkManager(); 28 29 // NetworkManager interface. 30 virtual void StartUpdating() OVERRIDE; 31 virtual void StopUpdating() OVERRIDE; 32 33 private: 34 static void OnNetworkListCallbackHandler(void* user_data, 35 PP_Resource list_resource); 36 37 void OnNetworkList(int32_t result, const pp::NetworkList& list); 38 39 void SendNetworksChangedSignal(); 40 41 pp::NetworkMonitor monitor_; 42 int start_count_; 43 bool network_list_received_; 44 45 pp::CompletionCallbackFactory<PepperNetworkManager> callback_factory_; 46 47 base::WeakPtrFactory<PepperNetworkManager> weak_factory_; 48}; 49 50} // namespace remoting 51 52#endif // REMOTING_CLIENT_PLUGIN_PEPPER_NETWORK_MANAGER_H_ 53