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.
5 #ifndef CONTENT_RENDERER_P2P_PORT_ALLOCATOR_H_
6 #define CONTENT_RENDERER_P2P_PORT_ALLOCATOR_H_
8 #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h"
12 class P2PPortAllocatorSession
;
13 class P2PSocketDispatcher
;
15 class P2PPortAllocator
: public cricket::BasicPortAllocator
{
21 struct RelayServerConfig
{
27 std::string server_address
;
29 std::string transport_type
;
33 std::set
<rtc::SocketAddress
> stun_servers
;
35 std::vector
<RelayServerConfig
> relays
;
37 // Disable TCP-based transport when set to true.
38 bool disable_tcp_transport
;
41 P2PPortAllocator(P2PSocketDispatcher
* socket_dispatcher
,
42 rtc::NetworkManager
* network_manager
,
43 rtc::PacketSocketFactory
* socket_factory
,
44 const Config
& config
);
45 virtual ~P2PPortAllocator();
47 virtual cricket::PortAllocatorSession
* CreateSessionInternal(
48 const std::string
& content_name
,
50 const std::string
& ice_username_fragment
,
51 const std::string
& ice_password
) override
;
54 friend class P2PPortAllocatorSession
;
56 P2PSocketDispatcher
* socket_dispatcher_
;
59 DISALLOW_COPY_AND_ASSIGN(P2PPortAllocator
);
62 class P2PPortAllocatorSession
: public cricket::BasicPortAllocatorSession
{
64 P2PPortAllocatorSession(
65 P2PPortAllocator
* allocator
,
66 const std::string
& content_name
,
68 const std::string
& ice_username_fragment
,
69 const std::string
& ice_password
);
70 virtual ~P2PPortAllocatorSession();
73 // Overrides for cricket::BasicPortAllocatorSession.
74 virtual void GetPortConfigurations() override
;
77 P2PPortAllocator
* allocator_
;
79 DISALLOW_COPY_AND_ASSIGN(P2PPortAllocatorSession
);
82 } // namespace content
84 #endif // CONTENT_RENDERER_P2P_PORT_ALLOCATOR_H_