OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "remoting/protocol/libjingle_transport_factory.h" | 5 #include "remoting/protocol/libjingle_transport_factory.h" |
6 | 6 |
7 #include "base/message_loop_proxy.h" | 7 #include "base/message_loop_proxy.h" |
8 #include "jingle/glue/channel_socket_adapter.h" | 8 #include "jingle/glue/channel_socket_adapter.h" |
9 #include "jingle/glue/pseudotcp_adapter.h" | 9 #include "jingle/glue/pseudotcp_adapter.h" |
10 #include "jingle/glue/utils.h" | 10 #include "jingle/glue/utils.h" |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 DCHECK(CalledOnValidThread()); | 133 DCHECK(CalledOnValidThread()); |
134 | 134 |
135 callback_ = callback; | 135 callback_ = callback; |
136 | 136 |
137 // Create port allocator first. | 137 // Create port allocator first. |
138 | 138 |
139 // We always use PseudoTcp to provide a reliable channel. However | 139 // We always use PseudoTcp to provide a reliable channel. However |
140 // when it is used together with TCP the performance is very bad | 140 // when it is used together with TCP the performance is very bad |
141 // so we explicitly disable TCP connections. | 141 // so we explicitly disable TCP connections. |
142 int port_allocator_flags = cricket::PORTALLOCATOR_DISABLE_TCP; | 142 int port_allocator_flags = cricket::PORTALLOCATOR_DISABLE_TCP; |
143 if (config_.nat_traversal) { | 143 if (config_.nat_traversal_mode == TransportConfig::NAT_TRAVERSAL_ENABLED) { |
144 http_port_allocator_ = new cricket::HttpPortAllocator( | 144 http_port_allocator_ = new cricket::HttpPortAllocator( |
145 network_manager_, socket_factory_, ""); | 145 network_manager_, socket_factory_, ""); |
146 port_allocator_.reset(http_port_allocator_); | 146 port_allocator_.reset(http_port_allocator_); |
147 } else { | 147 } else { |
148 port_allocator_flags |= cricket::PORTALLOCATOR_DISABLE_STUN | | 148 port_allocator_flags |= cricket::PORTALLOCATOR_DISABLE_STUN | |
149 cricket::PORTALLOCATOR_DISABLE_RELAY; | 149 cricket::PORTALLOCATOR_DISABLE_RELAY; |
150 port_allocator_.reset( | 150 port_allocator_.reset( |
151 new cricket::BasicPortAllocator(network_manager_, socket_factory_)); | 151 new cricket::BasicPortAllocator(network_manager_, socket_factory_)); |
152 } | 152 } |
153 port_allocator_->set_flags(port_allocator_flags); | 153 port_allocator_->set_flags(port_allocator_flags); |
154 | 154 |
155 port_allocator_->SetPortRange(config_.min_port, config_.max_port); | 155 port_allocator_->SetPortRange(config_.min_port, config_.max_port); |
156 | 156 |
157 // Create P2PTransportChannel, attach signal handlers and connect it. | 157 // Create P2PTransportChannel, attach signal handlers and connect it. |
158 DCHECK(!channel_.get()); | 158 DCHECK(!channel_.get()); |
159 channel_.reset(new cricket::P2PTransportChannel( | 159 channel_.reset(new cricket::P2PTransportChannel( |
160 name_, "", NULL, port_allocator_.get())); | 160 name_, "", NULL, port_allocator_.get())); |
161 channel_->SignalRequestSignaling.connect( | 161 channel_->SignalRequestSignaling.connect( |
162 this, &LibjingleStreamTransport::OnRequestSignaling); | 162 this, &LibjingleStreamTransport::OnRequestSignaling); |
163 channel_->SignalCandidateReady.connect( | 163 channel_->SignalCandidateReady.connect( |
164 this, &LibjingleStreamTransport::OnCandidateReady); | 164 this, &LibjingleStreamTransport::OnCandidateReady); |
165 channel_->SignalRouteChange.connect( | 165 channel_->SignalRouteChange.connect( |
166 this, &LibjingleStreamTransport::OnRouteChange); | 166 this, &LibjingleStreamTransport::OnRouteChange); |
| 167 if (config_.nat_traversal_mode == TransportConfig::NAT_TRAVERSAL_DISABLED) |
| 168 channel_->set_incoming_only(true); |
167 | 169 |
168 channel_->Connect(); | 170 channel_->Connect(); |
169 | 171 |
170 // Create net::Socket adapter for the P2PTransportChannel. | 172 // Create net::Socket adapter for the P2PTransportChannel. |
171 scoped_ptr<jingle_glue::TransportChannelSocketAdapter> channel_adapter( | 173 scoped_ptr<jingle_glue::TransportChannelSocketAdapter> channel_adapter( |
172 new jingle_glue::TransportChannelSocketAdapter(channel_.get())); | 174 new jingle_glue::TransportChannelSocketAdapter(channel_.get())); |
173 | 175 |
174 channel_adapter->SetOnDestroyedCallback(base::Bind( | 176 channel_adapter->SetOnDestroyedCallback(base::Bind( |
175 &LibjingleStreamTransport::OnChannelDestroyed, base::Unretained(this))); | 177 &LibjingleStreamTransport::OnChannelDestroyed, base::Unretained(this))); |
176 | 178 |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 | 337 |
336 scoped_ptr<DatagramTransport> | 338 scoped_ptr<DatagramTransport> |
337 LibjingleTransportFactory::CreateDatagramTransport() { | 339 LibjingleTransportFactory::CreateDatagramTransport() { |
338 NOTIMPLEMENTED(); | 340 NOTIMPLEMENTED(); |
339 return scoped_ptr<DatagramTransport>(NULL); | 341 return scoped_ptr<DatagramTransport>(NULL); |
340 } | 342 } |
341 | 343 |
342 | 344 |
343 } // namespace protocol | 345 } // namespace protocol |
344 } // namespace remoting | 346 } // namespace remoting |
OLD | NEW |