| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/webrtc_connection_to_client.h" | 5 #include "remoting/protocol/webrtc_connection_to_client.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 // TODO(sergeyu): Figure out if we would benefit from using a separate | 35 // TODO(sergeyu): Figure out if we would benefit from using a separate |
| 36 // thread as a worker thread. | 36 // thread as a worker thread. |
| 37 WebrtcConnectionToClient::WebrtcConnectionToClient( | 37 WebrtcConnectionToClient::WebrtcConnectionToClient( |
| 38 scoped_ptr<protocol::Session> session, | 38 scoped_ptr<protocol::Session> session, |
| 39 scoped_refptr<protocol::TransportContext> transport_context) | 39 scoped_refptr<protocol::TransportContext> transport_context) |
| 40 : transport_(jingle_glue::JingleThreadWrapper::current(), | 40 : transport_(jingle_glue::JingleThreadWrapper::current(), |
| 41 transport_context, | 41 transport_context, |
| 42 this), | 42 this), |
| 43 session_(std::move(session)), | 43 session_(std::move(session)), |
| 44 control_dispatcher_(new HostControlDispatcher()), | 44 control_dispatcher_(new HostControlDispatcher()), |
| 45 event_dispatcher_(new HostEventDispatcher()) { | 45 event_dispatcher_(new HostEventDispatcher()), |
| 46 weak_factory_(this) { |
| 46 session_->SetEventHandler(this); | 47 session_->SetEventHandler(this); |
| 47 session_->SetTransport(&transport_); | 48 session_->SetTransport(&transport_); |
| 48 } | 49 } |
| 49 | 50 |
| 50 WebrtcConnectionToClient::~WebrtcConnectionToClient() {} | 51 WebrtcConnectionToClient::~WebrtcConnectionToClient() {} |
| 51 | 52 |
| 52 void WebrtcConnectionToClient::SetEventHandler( | 53 void WebrtcConnectionToClient::SetEventHandler( |
| 53 ConnectionToClient::EventHandler* event_handler) { | 54 ConnectionToClient::EventHandler* event_handler) { |
| 54 DCHECK(thread_checker_.CalledOnValidThread()); | 55 DCHECK(thread_checker_.CalledOnValidThread()); |
| 55 event_handler_ = event_handler; | 56 event_handler_ = event_handler; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 74 } | 75 } |
| 75 | 76 |
| 76 scoped_ptr<VideoStream> WebrtcConnectionToClient::StartVideoStream( | 77 scoped_ptr<VideoStream> WebrtcConnectionToClient::StartVideoStream( |
| 77 scoped_ptr<webrtc::DesktopCapturer> desktop_capturer) { | 78 scoped_ptr<webrtc::DesktopCapturer> desktop_capturer) { |
| 78 scoped_ptr<WebrtcVideoStream> stream(new WebrtcVideoStream()); | 79 scoped_ptr<WebrtcVideoStream> stream(new WebrtcVideoStream()); |
| 79 if (!stream->Start(std::move(desktop_capturer), transport_.peer_connection(), | 80 if (!stream->Start(std::move(desktop_capturer), transport_.peer_connection(), |
| 80 transport_.peer_connection_factory())) { | 81 transport_.peer_connection_factory())) { |
| 81 return nullptr; | 82 return nullptr; |
| 82 } | 83 } |
| 83 return std::move(stream); | 84 return std::move(stream); |
| 84 | |
| 85 } | 85 } |
| 86 | 86 |
| 87 AudioStub* WebrtcConnectionToClient::audio_stub() { | 87 AudioStub* WebrtcConnectionToClient::audio_stub() { |
| 88 DCHECK(thread_checker_.CalledOnValidThread()); | 88 DCHECK(thread_checker_.CalledOnValidThread()); |
| 89 return nullptr; | 89 return nullptr; |
| 90 } | 90 } |
| 91 | 91 |
| 92 // Return pointer to ClientStub. | 92 // Return pointer to ClientStub. |
| 93 ClientStub* WebrtcConnectionToClient::client_stub() { | 93 ClientStub* WebrtcConnectionToClient::client_stub() { |
| 94 DCHECK(thread_checker_.CalledOnValidThread()); | 94 DCHECK(thread_checker_.CalledOnValidThread()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 115 DCHECK(thread_checker_.CalledOnValidThread()); | 115 DCHECK(thread_checker_.CalledOnValidThread()); |
| 116 | 116 |
| 117 DCHECK(event_handler_); | 117 DCHECK(event_handler_); |
| 118 switch(state) { | 118 switch(state) { |
| 119 case Session::INITIALIZING: | 119 case Session::INITIALIZING: |
| 120 case Session::CONNECTING: | 120 case Session::CONNECTING: |
| 121 case Session::ACCEPTING: | 121 case Session::ACCEPTING: |
| 122 case Session::ACCEPTED: | 122 case Session::ACCEPTED: |
| 123 // Don't care about these events. | 123 // Don't care about these events. |
| 124 break; | 124 break; |
| 125 |
| 125 case Session::AUTHENTICATING: | 126 case Session::AUTHENTICATING: |
| 126 event_handler_->OnConnectionAuthenticating(this); | 127 event_handler_->OnConnectionAuthenticating(this); |
| 127 break; | 128 break; |
| 128 case Session::AUTHENTICATED: | 129 |
| 130 case Session::AUTHENTICATED: { |
| 131 base::WeakPtr<WebrtcConnectionToClient> self = weak_factory_.GetWeakPtr(); |
| 129 event_handler_->OnConnectionAuthenticated(this); | 132 event_handler_->OnConnectionAuthenticated(this); |
| 133 |
| 134 // OnConnectionAuthenticated() call above may result in the connection |
| 135 // being torn down. |
| 136 if (self) |
| 137 event_handler_->OnCreateVideoStreams(this); |
| 130 break; | 138 break; |
| 139 } |
| 140 |
| 131 case Session::CLOSED: | 141 case Session::CLOSED: |
| 132 case Session::FAILED: | 142 case Session::FAILED: |
| 133 control_dispatcher_.reset(); | 143 control_dispatcher_.reset(); |
| 134 event_dispatcher_.reset(); | 144 event_dispatcher_.reset(); |
| 135 event_handler_->OnConnectionClosed( | 145 event_handler_->OnConnectionClosed( |
| 136 this, state == Session::CLOSED ? OK : session_->error()); | 146 this, state == Session::CLOSED ? OK : session_->error()); |
| 137 break; | 147 break; |
| 138 } | 148 } |
| 139 } | 149 } |
| 140 | 150 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 168 DCHECK(thread_checker_.CalledOnValidThread()); | 178 DCHECK(thread_checker_.CalledOnValidThread()); |
| 169 | 179 |
| 170 if (control_dispatcher_ && control_dispatcher_->is_connected() && | 180 if (control_dispatcher_ && control_dispatcher_->is_connected() && |
| 171 event_dispatcher_ && event_dispatcher_->is_connected()) { | 181 event_dispatcher_ && event_dispatcher_->is_connected()) { |
| 172 event_handler_->OnConnectionChannelsConnected(this); | 182 event_handler_->OnConnectionChannelsConnected(this); |
| 173 } | 183 } |
| 174 } | 184 } |
| 175 | 185 |
| 176 } // namespace protocol | 186 } // namespace protocol |
| 177 } // namespace remoting | 187 } // namespace remoting |
| OLD | NEW |