summaryrefslogtreecommitdiffstats
path: root/remoting/host/chromium_port_allocator_factory.cc
blob: a7ed61e3ad8da32dca602977aa1f62e1904e364c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Copyright 2014 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.

#include "remoting/host/chromium_port_allocator_factory.h"

#include "base/logging.h"
#include "net/url_request/url_request_context_getter.h"
#include "remoting/protocol/chromium_port_allocator.h"
#include "remoting/protocol/network_settings.h"

namespace remoting {

ChromiumPortAllocatorFactory::ChromiumPortAllocatorFactory(
    const protocol::NetworkSettings& network_settings,
    scoped_refptr<net::URLRequestContextGetter> url_request_context_getter)
    : network_settings_(network_settings),
      url_request_context_getter_(url_request_context_getter) {
}

ChromiumPortAllocatorFactory::~ChromiumPortAllocatorFactory() {}

talk_base::scoped_refptr<webrtc::PortAllocatorFactoryInterface>
ChromiumPortAllocatorFactory::Create(
    const protocol::NetworkSettings& network_settings,
    scoped_refptr<net::URLRequestContextGetter> url_request_context_getter) {
  talk_base::RefCountedObject<ChromiumPortAllocatorFactory>* allocator_factory =
      new talk_base::RefCountedObject<ChromiumPortAllocatorFactory>(
          network_settings, url_request_context_getter);
  return allocator_factory;
}

cricket::PortAllocator* ChromiumPortAllocatorFactory::CreatePortAllocator(
    const std::vector<StunConfiguration>& stun_servers,
    const std::vector<TurnConfiguration>& turn_configurations) {
  scoped_ptr<protocol::ChromiumPortAllocator> port_allocator(
      protocol::ChromiumPortAllocator::Create(url_request_context_getter_,
                                    network_settings_));

  std::vector<talk_base::SocketAddress> stun_hosts;
  typedef std::vector<StunConfiguration>::const_iterator StunIt;
  for (StunIt stun_it = stun_servers.begin(); stun_it != stun_servers.end();
       ++stun_it) {
    stun_hosts.push_back(stun_it->server);
  }
  port_allocator->SetStunHosts(stun_hosts);

  // TODO(aiguha): Figure out how to translate |turn_configurations| into
  // turn hosts so we can set |port_allocator|'s relay hosts.

  return port_allocator.release();
}

}  // namespace remoting