| 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" |
| 11 #include "net/base/net_errors.h" | 11 #include "net/base/net_errors.h" |
| 12 #include "remoting/base/constants.h" | 12 #include "remoting/base/constants.h" |
| 13 #include "remoting/protocol/channel_authenticator.h" | 13 #include "remoting/protocol/channel_authenticator.h" |
| 14 #include "remoting/protocol/transport_config.h" | 14 #include "remoting/protocol/transport_config.h" |
| 15 #include "third_party/libjingle/source/talk/base/basicpacketsocketfactory.h" | 15 #include "third_party/libjingle/source/talk/base/basicpacketsocketfactory.h" |
| 16 #include "third_party/libjingle/source/talk/base/network.h" | 16 #include "third_party/libjingle/source/talk/base/network.h" |
| 17 #include "third_party/libjingle/source/talk/p2p/base/constants.h" |
| 17 #include "third_party/libjingle/source/talk/p2p/base/p2ptransportchannel.h" | 18 #include "third_party/libjingle/source/talk/p2p/base/p2ptransportchannel.h" |
| 18 #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h" | 19 #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h" |
| 19 #include "third_party/libjingle/source/talk/p2p/client/httpportallocator.h" | 20 #include "third_party/libjingle/source/talk/p2p/client/httpportallocator.h" |
| 20 | 21 |
| 21 namespace remoting { | 22 namespace remoting { |
| 22 namespace protocol { | 23 namespace protocol { |
| 23 | 24 |
| 24 namespace { | 25 namespace { |
| 25 | 26 |
| 26 // Value is choosen to balance the extra latency against the reduced | 27 // Value is choosen to balance the extra latency against the reduced |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 void NotifyConnected(scoped_ptr<net::StreamSocket> socket); | 67 void NotifyConnected(scoped_ptr<net::StreamSocket> socket); |
| 67 void NotifyConnectFailed(); | 68 void NotifyConnectFailed(); |
| 68 | 69 |
| 69 cricket::PortAllocator* port_allocator_; | 70 cricket::PortAllocator* port_allocator_; |
| 70 bool incoming_only_; | 71 bool incoming_only_; |
| 71 | 72 |
| 72 std::string name_; | 73 std::string name_; |
| 73 EventHandler* event_handler_; | 74 EventHandler* event_handler_; |
| 74 StreamTransport::ConnectedCallback callback_; | 75 StreamTransport::ConnectedCallback callback_; |
| 75 scoped_ptr<ChannelAuthenticator> authenticator_; | 76 scoped_ptr<ChannelAuthenticator> authenticator_; |
| 77 std::string ice_username_fragment_; |
| 78 std::string ice_password_; |
| 76 | 79 |
| 77 scoped_ptr<cricket::P2PTransportChannel> channel_; | 80 scoped_ptr<cricket::P2PTransportChannel> channel_; |
| 78 | 81 |
| 79 // We own |socket_| until it is connected. | 82 // We own |socket_| until it is connected. |
| 80 scoped_ptr<jingle_glue::PseudoTcpAdapter> socket_; | 83 scoped_ptr<jingle_glue::PseudoTcpAdapter> socket_; |
| 81 | 84 |
| 82 DISALLOW_COPY_AND_ASSIGN(LibjingleStreamTransport); | 85 DISALLOW_COPY_AND_ASSIGN(LibjingleStreamTransport); |
| 83 }; | 86 }; |
| 84 | 87 |
| 85 LibjingleStreamTransport::LibjingleStreamTransport( | 88 LibjingleStreamTransport::LibjingleStreamTransport( |
| 86 cricket::PortAllocator* port_allocator, | 89 cricket::PortAllocator* port_allocator, |
| 87 bool incoming_only) | 90 bool incoming_only) |
| 88 : port_allocator_(port_allocator), | 91 : port_allocator_(port_allocator), |
| 89 incoming_only_(incoming_only), | 92 incoming_only_(incoming_only), |
| 90 event_handler_(NULL) { | 93 event_handler_(NULL), |
| 94 ice_username_fragment_( |
| 95 talk_base::CreateRandomString(cricket::ICE_UFRAG_LENGTH)), |
| 96 ice_password_(talk_base::CreateRandomString(cricket::ICE_PWD_LENGTH)) { |
| 91 } | 97 } |
| 92 | 98 |
| 93 LibjingleStreamTransport::~LibjingleStreamTransport() { | 99 LibjingleStreamTransport::~LibjingleStreamTransport() { |
| 94 DCHECK(event_handler_); | 100 DCHECK(event_handler_); |
| 95 event_handler_->OnTransportDeleted(this); | 101 event_handler_->OnTransportDeleted(this); |
| 96 // Channel should be already destroyed if we were connected. | 102 // Channel should be already destroyed if we were connected. |
| 97 DCHECK(!is_connected() || socket_.get() == NULL); | 103 DCHECK(!is_connected() || socket_.get() == NULL); |
| 98 | 104 |
| 99 if (channel_.get()) { | 105 if (channel_.get()) { |
| 100 base::MessageLoopProxy::current()->DeleteSoon( | 106 base::MessageLoopProxy::current()->DeleteSoon( |
| (...skipping 22 matching lines...) Expand all Loading... |
| 123 const StreamTransport::ConnectedCallback& callback) { | 129 const StreamTransport::ConnectedCallback& callback) { |
| 124 DCHECK(CalledOnValidThread()); | 130 DCHECK(CalledOnValidThread()); |
| 125 | 131 |
| 126 callback_ = callback; | 132 callback_ = callback; |
| 127 | 133 |
| 128 DCHECK(!channel_.get()); | 134 DCHECK(!channel_.get()); |
| 129 | 135 |
| 130 // Create P2PTransportChannel, attach signal handlers and connect it. | 136 // Create P2PTransportChannel, attach signal handlers and connect it. |
| 131 // TODO(sergeyu): Specify correct component ID for the channel. | 137 // TODO(sergeyu): Specify correct component ID for the channel. |
| 132 channel_.reset(new cricket::P2PTransportChannel( | 138 channel_.reset(new cricket::P2PTransportChannel( |
| 133 name_, 0, NULL, port_allocator_)); | 139 0, NULL, port_allocator_)); |
| 140 channel_->SetIceUfrag(ice_username_fragment_); |
| 141 channel_->SetIcePwd(ice_password_); |
| 134 channel_->SignalRequestSignaling.connect( | 142 channel_->SignalRequestSignaling.connect( |
| 135 this, &LibjingleStreamTransport::OnRequestSignaling); | 143 this, &LibjingleStreamTransport::OnRequestSignaling); |
| 136 channel_->SignalCandidateReady.connect( | 144 channel_->SignalCandidateReady.connect( |
| 137 this, &LibjingleStreamTransport::OnCandidateReady); | 145 this, &LibjingleStreamTransport::OnCandidateReady); |
| 138 channel_->SignalRouteChange.connect( | 146 channel_->SignalRouteChange.connect( |
| 139 this, &LibjingleStreamTransport::OnRouteChange); | 147 this, &LibjingleStreamTransport::OnRouteChange); |
| 140 channel_->set_incoming_only(incoming_only_); | 148 channel_->set_incoming_only(incoming_only_); |
| 141 | 149 |
| 142 channel_->Connect(); | 150 channel_->Connect(); |
| 143 | 151 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 } | 350 } |
| 343 | 351 |
| 344 scoped_ptr<DatagramTransport> | 352 scoped_ptr<DatagramTransport> |
| 345 LibjingleTransportFactory::CreateDatagramTransport() { | 353 LibjingleTransportFactory::CreateDatagramTransport() { |
| 346 NOTIMPLEMENTED(); | 354 NOTIMPLEMENTED(); |
| 347 return scoped_ptr<DatagramTransport>(NULL); | 355 return scoped_ptr<DatagramTransport>(NULL); |
| 348 } | 356 } |
| 349 | 357 |
| 350 } // namespace protocol | 358 } // namespace protocol |
| 351 } // namespace remoting | 359 } // namespace remoting |
| OLD | NEW |