diff options
Diffstat (limited to 'remoting/host/host_port_allocator.h')
-rw-r--r-- | remoting/host/host_port_allocator.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/remoting/host/host_port_allocator.h b/remoting/host/host_port_allocator.h new file mode 100644 index 0000000..868102f --- /dev/null +++ b/remoting/host/host_port_allocator.h @@ -0,0 +1,55 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef REMOTING_HOST_HOST_PORT_ALLOCATOR_H_ +#define REMOTING_HOST_HOST_PORT_ALLOCATOR_H_ + +#include <set> + +#include "base/memory/scoped_ptr.h" +#include "remoting/host/url_fetcher.h" +#include "third_party/libjingle/source/talk/p2p/client/httpportallocator.h" + +namespace net { +class URLRequestContextGetter; +} // namespace net + +namespace remoting { + +struct NetworkSettings; + +// An implementation of cricket::PortAllocator for libjingle that is +// used by the remoting host. The main difference from +// cricket::HttpPortAllocator is that it uses Chromium's HTTP stack +// when creating relay sessions. It also configures itself according +// to the specified NetworkSettings. +class HostPortAllocator : public cricket::HttpPortAllocatorBase { + public: + static scoped_ptr<HostPortAllocator> Create( + const scoped_refptr<net::URLRequestContextGetter>& url_context, + const NetworkSettings& network_settings); + + virtual ~HostPortAllocator(); + + // cricket::HttpPortAllocatorBase overrides. + virtual cricket::PortAllocatorSession* CreateSession( + const std::string& channel_name, + int component) OVERRIDE; + + private: + HostPortAllocator( + const scoped_refptr<net::URLRequestContextGetter>& url_context, + scoped_ptr<talk_base::NetworkManager> network_manager, + scoped_ptr<talk_base::PacketSocketFactory> socket_factory); + + scoped_refptr<net::URLRequestContextGetter> url_context_; + scoped_ptr<talk_base::NetworkManager> network_manager_; + scoped_ptr<talk_base::PacketSocketFactory> socket_factory_; + + DISALLOW_COPY_AND_ASSIGN(HostPortAllocator); +}; + +} // namespace remoting + +#endif // REMOTING_HOST_HOST_PORT_ALLOCATOR_H_ |