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.
5 #include "remoting/host/chromium_port_allocator_factory.h"
7 #include "base/logging.h"
8 #include "net/url_request/url_request_context_getter.h"
9 #include "remoting/protocol/chromium_port_allocator.h"
10 #include "remoting/protocol/network_settings.h"
14 ChromiumPortAllocatorFactory::ChromiumPortAllocatorFactory(
15 const protocol::NetworkSettings
& network_settings
,
16 scoped_refptr
<net::URLRequestContextGetter
> url_request_context_getter
)
17 : network_settings_(network_settings
),
18 url_request_context_getter_(url_request_context_getter
) {
21 ChromiumPortAllocatorFactory::~ChromiumPortAllocatorFactory() {}
23 rtc::scoped_refptr
<webrtc::PortAllocatorFactoryInterface
>
24 ChromiumPortAllocatorFactory::Create(
25 const protocol::NetworkSettings
& network_settings
,
26 scoped_refptr
<net::URLRequestContextGetter
> url_request_context_getter
) {
27 rtc::RefCountedObject
<ChromiumPortAllocatorFactory
>* allocator_factory
=
28 new rtc::RefCountedObject
<ChromiumPortAllocatorFactory
>(
29 network_settings
, url_request_context_getter
);
30 return allocator_factory
;
33 cricket::PortAllocator
* ChromiumPortAllocatorFactory::CreatePortAllocator(
34 const std::vector
<StunConfiguration
>& stun_servers
,
35 const std::vector
<TurnConfiguration
>& turn_configurations
) {
36 scoped_ptr
<protocol::ChromiumPortAllocator
> port_allocator(
37 protocol::ChromiumPortAllocator::Create(url_request_context_getter_
,
40 std::vector
<rtc::SocketAddress
> stun_hosts
;
41 typedef std::vector
<StunConfiguration
>::const_iterator StunIt
;
42 for (StunIt stun_it
= stun_servers
.begin(); stun_it
!= stun_servers
.end();
44 stun_hosts
.push_back(stun_it
->server
);
46 port_allocator
->SetStunHosts(stun_hosts
);
48 // TODO(aiguha): Figure out how to translate |turn_configurations| into
49 // turn hosts so we can set |port_allocator|'s relay hosts.
51 return port_allocator
.release();
54 } // namespace remoting