pepper_port_allocator.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
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_PORT_ALLOCATOR_H_ 6#define REMOTING_CLIENT_PLUGIN_PEPPER_PORT_ALLOCATOR_H_ 7 8#include "base/compiler_specific.h" 9#include "base/memory/scoped_ptr.h" 10#include "ppapi/cpp/instance_handle.h" 11#include "third_party/libjingle/source/talk/p2p/client/httpportallocator.h" 12 13namespace remoting { 14 15// An implementation of cricket::PortAllocator for libjingle that is 16// used by the client plugin. There are two differences from 17// cricket::HttpPortAllocator: 18// * PepperPortAllocator uses Pepper URLLoader API when creating 19// relay sessions. 20// * PepperPortAllocator resolves STUN DNS names and passes IP 21// addresses to BasicPortAllocator (it uses HostResolverPrivate API 22// for that). This is needed because libjingle's DNS resolution 23// code doesn't work in sandbox. 24class PepperPortAllocator : public cricket::HttpPortAllocatorBase { 25 public: 26 static scoped_ptr<PepperPortAllocator> Create( 27 const pp::InstanceHandle& instance); 28 virtual ~PepperPortAllocator(); 29 30 // cricket::HttpPortAllocatorBase overrides. 31 virtual cricket::PortAllocatorSession* CreateSessionInternal( 32 const std::string& content_name, 33 int component, 34 const std::string& ice_username_fragment, 35 const std::string& ice_password) OVERRIDE; 36 37 private: 38 PepperPortAllocator( 39 const pp::InstanceHandle& instance, 40 scoped_ptr<talk_base::NetworkManager> network_manager, 41 scoped_ptr<talk_base::PacketSocketFactory> socket_factory); 42 43 pp::InstanceHandle instance_; 44 scoped_ptr<talk_base::NetworkManager> network_manager_; 45 scoped_ptr<talk_base::PacketSocketFactory> socket_factory_; 46 47 DISALLOW_COPY_AND_ASSIGN(PepperPortAllocator); 48}; 49 50} // namespace remoting 51 52#endif // REMOTING_CLIENT_PLUGIN_PEPPER_PORT_ALLOCATOR_H_ 53