| 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/single_thread_task_runner.h" |
| 8 #include "base/thread_task_runner_handle.h" |
| 8 #include "jingle/glue/channel_socket_adapter.h" | 9 #include "jingle/glue/channel_socket_adapter.h" |
| 9 #include "jingle/glue/pseudotcp_adapter.h" | 10 #include "jingle/glue/pseudotcp_adapter.h" |
| 10 #include "jingle/glue/utils.h" | 11 #include "jingle/glue/utils.h" |
| 11 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
| 12 #include "remoting/base/constants.h" | 13 #include "remoting/base/constants.h" |
| 13 #include "remoting/protocol/channel_authenticator.h" | 14 #include "remoting/protocol/channel_authenticator.h" |
| 14 #include "remoting/protocol/transport_config.h" | 15 #include "remoting/protocol/transport_config.h" |
| 15 #include "third_party/libjingle/source/talk/base/basicpacketsocketfactory.h" | 16 #include "third_party/libjingle/source/talk/base/basicpacketsocketfactory.h" |
| 16 #include "third_party/libjingle/source/talk/base/network.h" | 17 #include "third_party/libjingle/source/talk/base/network.h" |
| 17 #include "third_party/libjingle/source/talk/p2p/base/constants.h" | 18 #include "third_party/libjingle/source/talk/p2p/base/constants.h" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 ice_password_(talk_base::CreateRandomString(cricket::ICE_PWD_LENGTH)) { | 97 ice_password_(talk_base::CreateRandomString(cricket::ICE_PWD_LENGTH)) { |
| 97 } | 98 } |
| 98 | 99 |
| 99 LibjingleStreamTransport::~LibjingleStreamTransport() { | 100 LibjingleStreamTransport::~LibjingleStreamTransport() { |
| 100 DCHECK(event_handler_); | 101 DCHECK(event_handler_); |
| 101 event_handler_->OnTransportDeleted(this); | 102 event_handler_->OnTransportDeleted(this); |
| 102 // Channel should be already destroyed if we were connected. | 103 // Channel should be already destroyed if we were connected. |
| 103 DCHECK(!is_connected() || socket_.get() == NULL); | 104 DCHECK(!is_connected() || socket_.get() == NULL); |
| 104 | 105 |
| 105 if (channel_.get()) { | 106 if (channel_.get()) { |
| 106 base::MessageLoopProxy::current()->DeleteSoon( | 107 base::ThreadTaskRunnerHandle::Get()->DeleteSoon( |
| 107 FROM_HERE, channel_.release()); | 108 FROM_HERE, channel_.release()); |
| 108 } | 109 } |
| 109 } | 110 } |
| 110 | 111 |
| 111 void LibjingleStreamTransport::Initialize( | 112 void LibjingleStreamTransport::Initialize( |
| 112 const std::string& name, | 113 const std::string& name, |
| 113 Transport::EventHandler* event_handler, | 114 Transport::EventHandler* event_handler, |
| 114 scoped_ptr<ChannelAuthenticator> authenticator) { | 115 scoped_ptr<ChannelAuthenticator> authenticator) { |
| 115 DCHECK(CalledOnValidThread()); | 116 DCHECK(CalledOnValidThread()); |
| 116 | 117 |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 } | 279 } |
| 279 | 280 |
| 280 void LibjingleStreamTransport::NotifyConnectFailed() { | 281 void LibjingleStreamTransport::NotifyConnectFailed() { |
| 281 DCHECK(!is_connected()); | 282 DCHECK(!is_connected()); |
| 282 | 283 |
| 283 socket_.reset(); | 284 socket_.reset(); |
| 284 | 285 |
| 285 // This method may be called in response to a libjingle signal, so | 286 // This method may be called in response to a libjingle signal, so |
| 286 // libjingle objects must be deleted asynchronously. | 287 // libjingle objects must be deleted asynchronously. |
| 287 if (channel_.get()) { | 288 if (channel_.get()) { |
| 288 base::MessageLoopProxy::current()->DeleteSoon( | 289 base::ThreadTaskRunnerHandle::Get()->DeleteSoon( |
| 289 FROM_HERE, channel_.release()); | 290 FROM_HERE, channel_.release()); |
| 290 } | 291 } |
| 291 | 292 |
| 292 authenticator_.reset(); | 293 authenticator_.reset(); |
| 293 | 294 |
| 294 NotifyConnected(scoped_ptr<net::StreamSocket>(NULL)); | 295 NotifyConnected(scoped_ptr<net::StreamSocket>(NULL)); |
| 295 } | 296 } |
| 296 | 297 |
| 297 } // namespace | 298 } // namespace |
| 298 | 299 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 309 socket_factory_(new talk_base::BasicPacketSocketFactory()), | 310 socket_factory_(new talk_base::BasicPacketSocketFactory()), |
| 310 http_port_allocator_(NULL), | 311 http_port_allocator_(NULL), |
| 311 port_allocator_(new cricket::BasicPortAllocator( | 312 port_allocator_(new cricket::BasicPortAllocator( |
| 312 network_manager_.get(), socket_factory_.get())), | 313 network_manager_.get(), socket_factory_.get())), |
| 313 incoming_only_(false) { | 314 incoming_only_(false) { |
| 314 } | 315 } |
| 315 | 316 |
| 316 LibjingleTransportFactory::~LibjingleTransportFactory() { | 317 LibjingleTransportFactory::~LibjingleTransportFactory() { |
| 317 // This method may be called in response to a libjingle signal, so | 318 // This method may be called in response to a libjingle signal, so |
| 318 // libjingle objects must be deleted asynchronously. | 319 // libjingle objects must be deleted asynchronously. |
| 319 base::MessageLoopProxy::current()->DeleteSoon( | 320 scoped_refptr<base::SingleThreadTaskRunner> task_runner = |
| 320 FROM_HERE, port_allocator_.release()); | 321 base::ThreadTaskRunnerHandle::Get(); |
| 321 base::MessageLoopProxy::current()->DeleteSoon( | 322 task_runner->DeleteSoon(FROM_HERE, port_allocator_.release()); |
| 322 FROM_HERE, socket_factory_.release()); | 323 task_runner->DeleteSoon(FROM_HERE, socket_factory_.release()); |
| 323 base::MessageLoopProxy::current()->DeleteSoon( | 324 task_runner->DeleteSoon(FROM_HERE, network_manager_.release()); |
| 324 FROM_HERE, network_manager_.release()); | |
| 325 } | 325 } |
| 326 | 326 |
| 327 void LibjingleTransportFactory::SetTransportConfig( | 327 void LibjingleTransportFactory::SetTransportConfig( |
| 328 const TransportConfig& config) { | 328 const TransportConfig& config) { |
| 329 if (http_port_allocator_) { | 329 if (http_port_allocator_) { |
| 330 std::vector<talk_base::SocketAddress> stun_hosts; | 330 std::vector<talk_base::SocketAddress> stun_hosts; |
| 331 talk_base::SocketAddress stun_address; | 331 talk_base::SocketAddress stun_address; |
| 332 if (stun_address.FromString(config.stun_server)) { | 332 if (stun_address.FromString(config.stun_server)) { |
| 333 stun_hosts.push_back(stun_address); | 333 stun_hosts.push_back(stun_address); |
| 334 http_port_allocator_->SetStunHosts(stun_hosts); | 334 http_port_allocator_->SetStunHosts(stun_hosts); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 350 } | 350 } |
| 351 | 351 |
| 352 scoped_ptr<DatagramTransport> | 352 scoped_ptr<DatagramTransport> |
| 353 LibjingleTransportFactory::CreateDatagramTransport() { | 353 LibjingleTransportFactory::CreateDatagramTransport() { |
| 354 NOTIMPLEMENTED(); | 354 NOTIMPLEMENTED(); |
| 355 return scoped_ptr<DatagramTransport>(NULL); | 355 return scoped_ptr<DatagramTransport>(NULL); |
| 356 } | 356 } |
| 357 | 357 |
| 358 } // namespace protocol | 358 } // namespace protocol |
| 359 } // namespace remoting | 359 } // namespace remoting |
| OLD | NEW |