1 // Copyright 2014 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_PROTOCOL_CHROMIUM_PORT_ALLOCATOR_H_ 6 #define REMOTING_PROTOCOL_CHROMIUM_PORT_ALLOCATOR_H_ 7 8 #include <set> 9 10 #include "base/memory/ref_counted.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "third_party/libjingle/source/talk/p2p/client/httpportallocator.h" 13 14 namespace net { 15 class URLRequestContextGetter; 16 } // namespace net 17 18 namespace remoting { 19 namespace protocol { 20 21 struct NetworkSettings; 22 23 // An implementation of cricket::PortAllocator for libjingle that 24 // uses Chromium's network stack and configures itself according 25 // to the specified NetworkSettings. 26 class ChromiumPortAllocator : public cricket::HttpPortAllocatorBase { 27 public: 28 static scoped_ptr<ChromiumPortAllocator> Create( 29 const scoped_refptr<net::URLRequestContextGetter>& url_context, 30 const NetworkSettings& network_settings); 31 32 virtual ~ChromiumPortAllocator(); 33 34 // cricket::HttpPortAllocatorBase overrides. 35 virtual cricket::PortAllocatorSession* CreateSessionInternal( 36 const std::string& content_name, 37 int component, 38 const std::string& ice_username_fragment, 39 const std::string& ice_password) OVERRIDE; 40 41 private: 42 ChromiumPortAllocator( 43 const scoped_refptr<net::URLRequestContextGetter>& url_context, 44 scoped_ptr<rtc::NetworkManager> network_manager, 45 scoped_ptr<rtc::PacketSocketFactory> socket_factory); 46 47 scoped_refptr<net::URLRequestContextGetter> url_context_; 48 scoped_ptr<rtc::NetworkManager> network_manager_; 49 scoped_ptr<rtc::PacketSocketFactory> socket_factory_; 50 51 DISALLOW_COPY_AND_ASSIGN(ChromiumPortAllocator); 52 }; 53 54 } // namespace protocol 55 } // namespace remoting 56 57 #endif // REMOTING_HOST_HOST_PORT_ALLOCATOR_H_ 58