OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/p2p/p2p_transport_impl.h" | 5 #include "content/renderer/p2p/p2p_transport_impl.h" |
6 | 6 |
7 #include "content/renderer/p2p/ipc_network_manager.h" | 7 #include "content/renderer/p2p/ipc_network_manager.h" |
8 #include "content/renderer/p2p/ipc_socket_factory.h" | 8 #include "content/renderer/p2p/ipc_socket_factory.h" |
9 #include "content/renderer/p2p/port_allocator.h" | |
9 #include "content/renderer/render_view.h" | 10 #include "content/renderer/render_view.h" |
10 #include "jingle/glue/channel_socket_adapter.h" | 11 #include "jingle/glue/channel_socket_adapter.h" |
11 #include "jingle/glue/pseudotcp_adapter.h" | 12 #include "jingle/glue/pseudotcp_adapter.h" |
12 #include "jingle/glue/thread_wrapper.h" | 13 #include "jingle/glue/thread_wrapper.h" |
13 #include "jingle/glue/utils.h" | 14 #include "jingle/glue/utils.h" |
14 #include "net/base/net_errors.h" | 15 #include "net/base/net_errors.h" |
15 #include "third_party/libjingle/source/talk/p2p/base/p2ptransportchannel.h" | 16 #include "third_party/libjingle/source/talk/p2p/base/p2ptransportchannel.h" |
16 #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h" | 17 #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h" |
17 | 18 |
18 namespace content { | 19 namespace content { |
19 | 20 |
20 P2PTransportImpl::P2PTransportImpl( | 21 P2PTransportImpl::P2PTransportImpl( |
21 talk_base::NetworkManager* network_manager, | 22 talk_base::NetworkManager* network_manager, |
22 talk_base::PacketSocketFactory* socket_factory) | 23 talk_base::PacketSocketFactory* socket_factory) |
23 : event_handler_(NULL), | 24 : socket_dispatcher_(NULL), |
25 event_handler_(NULL), | |
24 state_(STATE_NONE), | 26 state_(STATE_NONE), |
25 network_manager_(network_manager), | 27 network_manager_(network_manager), |
26 socket_factory_(socket_factory), | 28 socket_factory_(socket_factory), |
27 ALLOW_THIS_IN_INITIALIZER_LIST(connect_callback_( | 29 ALLOW_THIS_IN_INITIALIZER_LIST(connect_callback_( |
28 this, &P2PTransportImpl::OnTcpConnected)) { | 30 this, &P2PTransportImpl::OnTcpConnected)) { |
29 } | 31 } |
30 | 32 |
31 P2PTransportImpl::P2PTransportImpl(P2PSocketDispatcher* socket_dispatcher) | 33 P2PTransportImpl::P2PTransportImpl(P2PSocketDispatcher* socket_dispatcher) |
32 : event_handler_(NULL), | 34 : socket_dispatcher_(socket_dispatcher), |
35 event_handler_(NULL), | |
33 state_(STATE_NONE), | 36 state_(STATE_NONE), |
34 network_manager_(new IpcNetworkManager(socket_dispatcher)), | 37 network_manager_(new IpcNetworkManager(socket_dispatcher)), |
35 socket_factory_(new IpcPacketSocketFactory(socket_dispatcher)), | 38 socket_factory_(new IpcPacketSocketFactory(socket_dispatcher)), |
36 ALLOW_THIS_IN_INITIALIZER_LIST(connect_callback_( | 39 ALLOW_THIS_IN_INITIALIZER_LIST(connect_callback_( |
37 this, &P2PTransportImpl::OnTcpConnected)) { | 40 this, &P2PTransportImpl::OnTcpConnected)) { |
41 DCHECK(socket_dispatcher); | |
38 } | 42 } |
39 | 43 |
40 P2PTransportImpl::~P2PTransportImpl() { | 44 P2PTransportImpl::~P2PTransportImpl() { |
41 } | 45 } |
42 | 46 |
43 bool P2PTransportImpl::Init(const std::string& name, | 47 bool P2PTransportImpl::Init(const std::string& name, |
44 Protocol protocol, | 48 Protocol protocol, |
45 const Config& config, | 49 const Config& config, |
46 EventHandler* event_handler) { | 50 EventHandler* event_handler) { |
47 DCHECK(event_handler); | 51 DCHECK(event_handler); |
48 | 52 |
49 // Before proceeding, ensure we have libjingle thread wrapper for | 53 // Before proceeding, ensure we have libjingle thread wrapper for |
50 // the current thread. | 54 // the current thread. |
51 jingle_glue::JingleThreadWrapper::EnsureForCurrentThread(); | 55 jingle_glue::JingleThreadWrapper::EnsureForCurrentThread(); |
52 | 56 |
53 name_ = name; | 57 name_ = name; |
54 event_handler_ = event_handler; | 58 event_handler_ = event_handler; |
55 | 59 |
56 // TODO(sergeyu): Use STUN/Relay settings from |config|. | 60 if (socket_dispatcher_) { |
57 allocator_.reset(new cricket::BasicPortAllocator( | 61 allocator_.reset(new P2PPortAllocator( |
58 network_manager_.get(), socket_factory_.get())); | 62 socket_dispatcher_, network_manager_.get(), |
63 socket_factory_.get(), config)); | |
64 } else { | |
65 // Use raw basic port allocator is used for tests. | |
Wez
2011/08/29 18:01:57
This comment needs rewording, although it could ju
Sergey Ulanov
2011/08/29 22:13:39
I think it's useful to have this comment here.
| |
66 allocator_.reset(new cricket::BasicPortAllocator( | |
67 network_manager_.get(), socket_factory_.get())); | |
68 } | |
59 | 69 |
60 DCHECK(!channel_.get()); | 70 DCHECK(!channel_.get()); |
61 channel_.reset(new cricket::P2PTransportChannel( | 71 channel_.reset(new cricket::P2PTransportChannel( |
62 name, "", NULL, allocator_.get())); | 72 name, "", NULL, allocator_.get())); |
63 channel_->SignalRequestSignaling.connect( | 73 channel_->SignalRequestSignaling.connect( |
64 this, &P2PTransportImpl::OnRequestSignaling); | 74 this, &P2PTransportImpl::OnRequestSignaling); |
65 channel_->SignalCandidateReady.connect( | 75 channel_->SignalCandidateReady.connect( |
66 this, &P2PTransportImpl::OnCandidateReady); | 76 this, &P2PTransportImpl::OnCandidateReady); |
67 | 77 |
68 if (protocol == PROTOCOL_UDP) { | 78 if (protocol == PROTOCOL_UDP) { |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
133 void P2PTransportImpl::OnTcpConnected(int result) { | 143 void P2PTransportImpl::OnTcpConnected(int result) { |
134 if (result < 0) { | 144 if (result < 0) { |
135 event_handler_->OnError(result); | 145 event_handler_->OnError(result); |
136 return; | 146 return; |
137 } | 147 } |
138 state_ = static_cast<State>(STATE_READABLE | STATE_WRITABLE); | 148 state_ = static_cast<State>(STATE_READABLE | STATE_WRITABLE); |
139 event_handler_->OnStateChange(state_); | 149 event_handler_->OnStateChange(state_); |
140 } | 150 } |
141 | 151 |
142 } // namespace content | 152 } // namespace content |
OLD | NEW |