Chromium Code Reviews| 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 "jingle/glue/channel_socket_adapter.h" | 7 #include "jingle/glue/channel_socket_adapter.h" |
| 8 #include "jingle/glue/pseudotcp_adapter.h" | 8 #include "jingle/glue/pseudotcp_adapter.h" |
| 9 #include "jingle/glue/utils.h" | |
| 9 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| 10 #include "remoting/protocol/channel_authenticator.h" | 11 #include "remoting/protocol/channel_authenticator.h" |
| 11 #include "remoting/protocol/transport_config.h" | 12 #include "remoting/protocol/transport_config.h" |
| 12 #include "third_party/libjingle/source/talk/base/basicpacketsocketfactory.h" | 13 #include "third_party/libjingle/source/talk/base/basicpacketsocketfactory.h" |
| 13 #include "third_party/libjingle/source/talk/base/network.h" | 14 #include "third_party/libjingle/source/talk/base/network.h" |
| 14 #include "third_party/libjingle/source/talk/p2p/base/p2ptransportchannel.h" | 15 #include "third_party/libjingle/source/talk/p2p/base/p2ptransportchannel.h" |
| 15 #include "third_party/libjingle/source/talk/p2p/client/httpportallocator.h" | 16 #include "third_party/libjingle/source/talk/p2p/client/httpportallocator.h" |
| 16 | 17 |
| 17 namespace remoting { | 18 namespace remoting { |
| 18 namespace protocol { | 19 namespace protocol { |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 44 virtual void Connect( | 45 virtual void Connect( |
| 45 const StreamTransport::ConnectedCallback& callback) OVERRIDE; | 46 const StreamTransport::ConnectedCallback& callback) OVERRIDE; |
| 46 virtual void AddRemoteCandidate(const cricket::Candidate& candidate) OVERRIDE; | 47 virtual void AddRemoteCandidate(const cricket::Candidate& candidate) OVERRIDE; |
| 47 virtual const std::string& name() const OVERRIDE; | 48 virtual const std::string& name() const OVERRIDE; |
| 48 virtual bool is_connected() const OVERRIDE; | 49 virtual bool is_connected() const OVERRIDE; |
| 49 | 50 |
| 50 private: | 51 private: |
| 51 void OnRequestSignaling(); | 52 void OnRequestSignaling(); |
| 52 void OnCandidateReady(cricket::TransportChannelImpl* channel, | 53 void OnCandidateReady(cricket::TransportChannelImpl* channel, |
| 53 const cricket::Candidate& candidate); | 54 const cricket::Candidate& candidate); |
| 55 void OnRouteChange(cricket::TransportChannel* channel, | |
| 56 const cricket::Candidate& candidate); | |
| 54 | 57 |
| 55 void OnTcpConnected(int result); | 58 void OnTcpConnected(int result); |
| 56 void OnAuthenticationDone(net::Error error, | 59 void OnAuthenticationDone(net::Error error, |
| 57 scoped_ptr<net::StreamSocket> socket); | 60 scoped_ptr<net::StreamSocket> socket); |
| 58 | 61 |
| 59 void OnChannelDestroyed(); | 62 void OnChannelDestroyed(); |
| 60 | 63 |
| 61 void NotifyConnected(scoped_ptr<net::StreamSocket> socket); | 64 void NotifyConnected(scoped_ptr<net::StreamSocket> socket); |
| 62 void NotifyConnectFailed(); | 65 void NotifyConnectFailed(); |
| 63 | 66 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 149 port_allocator_->SetPortRange(config_.min_port, config_.max_port); | 152 port_allocator_->SetPortRange(config_.min_port, config_.max_port); |
| 150 | 153 |
| 151 // Create P2PTransportChannel. | 154 // Create P2PTransportChannel. |
| 152 DCHECK(!channel_.get()); | 155 DCHECK(!channel_.get()); |
| 153 channel_.reset(new cricket::P2PTransportChannel( | 156 channel_.reset(new cricket::P2PTransportChannel( |
| 154 name_, "", NULL, port_allocator_.get())); | 157 name_, "", NULL, port_allocator_.get())); |
| 155 channel_->SignalRequestSignaling.connect( | 158 channel_->SignalRequestSignaling.connect( |
| 156 this, &LibjingleStreamTransport::OnRequestSignaling); | 159 this, &LibjingleStreamTransport::OnRequestSignaling); |
| 157 channel_->SignalCandidateReady.connect( | 160 channel_->SignalCandidateReady.connect( |
| 158 this, &LibjingleStreamTransport::OnCandidateReady); | 161 this, &LibjingleStreamTransport::OnCandidateReady); |
| 162 channel_->SignalRouteChange.connect( | |
| 163 this, &LibjingleStreamTransport::OnRouteChange); | |
| 159 | 164 |
| 160 channel_->Connect(); | 165 channel_->Connect(); |
| 161 | 166 |
| 162 scoped_ptr<jingle_glue::TransportChannelSocketAdapter> channel_adapter( | 167 scoped_ptr<jingle_glue::TransportChannelSocketAdapter> channel_adapter( |
| 163 new jingle_glue::TransportChannelSocketAdapter(channel_.get())); | 168 new jingle_glue::TransportChannelSocketAdapter(channel_.get())); |
| 164 channel_adapter->SetOnDestroyedCallback(base::Bind( | 169 channel_adapter->SetOnDestroyedCallback(base::Bind( |
| 165 &LibjingleStreamTransport::OnChannelDestroyed, base::Unretained(this))); | 170 &LibjingleStreamTransport::OnChannelDestroyed, base::Unretained(this))); |
| 166 | 171 |
| 167 // Setup PseudoTCP adapter. | 172 // Setup PseudoTCP adapter. |
| 168 owned_socket_.reset( | 173 owned_socket_.reset( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 200 channel_->OnSignalingReady(); | 205 channel_->OnSignalingReady(); |
| 201 } | 206 } |
| 202 | 207 |
| 203 void LibjingleStreamTransport::OnCandidateReady( | 208 void LibjingleStreamTransport::OnCandidateReady( |
| 204 cricket::TransportChannelImpl* channel, | 209 cricket::TransportChannelImpl* channel, |
| 205 const cricket::Candidate& candidate) { | 210 const cricket::Candidate& candidate) { |
| 206 DCHECK(CalledOnValidThread()); | 211 DCHECK(CalledOnValidThread()); |
| 207 event_handler_->OnTransportCandidate(this, candidate); | 212 event_handler_->OnTransportCandidate(this, candidate); |
| 208 } | 213 } |
| 209 | 214 |
| 215 void LibjingleStreamTransport::OnRouteChange( | |
| 216 cricket::TransportChannel* channel, | |
| 217 const cricket::Candidate& candidate) { | |
| 218 TransportRoute route; | |
| 219 | |
| 220 if (candidate.type() == "local") { | |
| 221 route.type = TransportRoute::DIRECT; | |
| 222 } else if (candidate.type() == "stun") { | |
| 223 route.type = TransportRoute::STUN; | |
| 224 } else if (candidate.type() == "relay") { | |
| 225 route.type = TransportRoute::RELAY; | |
| 226 } else { | |
| 227 NOTREACHED(); | |
|
Wez
2012/02/21 18:42:34
Is NOTREACHED() appropriate here? It'll mean that
Sergey Ulanov
2012/02/21 19:47:19
Good point. Changed this to LOG(FATAL) that would
| |
| 228 } | |
| 229 | |
| 230 if (!jingle_glue::SocketAddressToIPEndPoint( | |
| 231 candidate.address(), &route.remote_address)) { | |
| 232 NOTREACHED(); | |
|
Wez
2012/02/21 18:42:34
Similarly here; since these notifications end up b
Sergey Ulanov
2012/02/21 19:47:19
Changed it to LOG(FATAL) too.
| |
| 233 return; | |
| 234 } | |
| 235 | |
| 236 DCHECK(channel->GetP2PChannel()); | |
| 237 DCHECK(channel->GetP2PChannel()->best_connection()); | |
| 238 const cricket::Candidate& local_candidate = | |
| 239 channel->GetP2PChannel()->best_connection()->local_candidate(); | |
| 240 if (!jingle_glue::SocketAddressToIPEndPoint( | |
| 241 local_candidate.address(), &route.local_address)) { | |
| 242 NOTREACHED(); | |
| 243 return; | |
| 244 } | |
| 245 | |
| 246 event_handler_->OnTransportRouteChange(this, route); | |
| 247 } | |
| 248 | |
| 210 void LibjingleStreamTransport::OnTcpConnected(int result) { | 249 void LibjingleStreamTransport::OnTcpConnected(int result) { |
| 211 DCHECK(CalledOnValidThread()); | 250 DCHECK(CalledOnValidThread()); |
| 212 | 251 |
| 213 if (result != net::OK) { | 252 if (result != net::OK) { |
| 214 NotifyConnectFailed(); | 253 NotifyConnectFailed(); |
| 215 return; | 254 return; |
| 216 } | 255 } |
| 217 | 256 |
| 218 authenticator_->SecureAndAuthenticate( | 257 authenticator_->SecureAndAuthenticate( |
| 219 owned_socket_.PassAs<net::StreamSocket>(), | 258 owned_socket_.PassAs<net::StreamSocket>(), |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 274 | 313 |
| 275 scoped_ptr<DatagramTransport> | 314 scoped_ptr<DatagramTransport> |
| 276 LibjingleTransportFactory::CreateDatagramTransport() { | 315 LibjingleTransportFactory::CreateDatagramTransport() { |
| 277 NOTIMPLEMENTED(); | 316 NOTIMPLEMENTED(); |
| 278 return scoped_ptr<DatagramTransport>(NULL); | 317 return scoped_ptr<DatagramTransport>(NULL); |
| 279 } | 318 } |
| 280 | 319 |
| 281 | 320 |
| 282 } // namespace protocol | 321 } // namespace protocol |
| 283 } // namespace remoting | 322 } // namespace remoting |
| OLD | NEW |