| 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/host/chromoting_host.h" | 5 #include "remoting/host/chromoting_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 void ChromotingHost::AddStatusObserver(HostStatusObserver* observer) { | 134 void ChromotingHost::AddStatusObserver(HostStatusObserver* observer) { |
| 135 DCHECK(CalledOnValidThread()); | 135 DCHECK(CalledOnValidThread()); |
| 136 status_observers_.AddObserver(observer); | 136 status_observers_.AddObserver(observer); |
| 137 } | 137 } |
| 138 | 138 |
| 139 void ChromotingHost::RemoveStatusObserver(HostStatusObserver* observer) { | 139 void ChromotingHost::RemoveStatusObserver(HostStatusObserver* observer) { |
| 140 DCHECK(CalledOnValidThread()); | 140 DCHECK(CalledOnValidThread()); |
| 141 status_observers_.RemoveObserver(observer); | 141 status_observers_.RemoveObserver(observer); |
| 142 } | 142 } |
| 143 | 143 |
| 144 void ChromotingHost::AddExtension(scoped_ptr<HostExtension> extension) { |
| 145 extensions_.push_back(extension.release()); |
| 146 } |
| 147 |
| 144 void ChromotingHost::RejectAuthenticatingClient() { | 148 void ChromotingHost::RejectAuthenticatingClient() { |
| 145 DCHECK(authenticating_client_); | 149 DCHECK(authenticating_client_); |
| 146 reject_authenticating_client_ = true; | 150 reject_authenticating_client_ = true; |
| 147 } | 151 } |
| 148 | 152 |
| 149 void ChromotingHost::SetAuthenticatorFactory( | 153 void ChromotingHost::SetAuthenticatorFactory( |
| 150 scoped_ptr<protocol::AuthenticatorFactory> authenticator_factory) { | 154 scoped_ptr<protocol::AuthenticatorFactory> authenticator_factory) { |
| 151 DCHECK(CalledOnValidThread()); | 155 DCHECK(CalledOnValidThread()); |
| 152 session_manager_->set_authenticator_factory(authenticator_factory.Pass()); | 156 session_manager_->set_authenticator_factory(authenticator_factory.Pass()); |
| 153 } | 157 } |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 } | 227 } |
| 224 | 228 |
| 225 void ChromotingHost::OnSessionChannelsConnected(ClientSession* client) { | 229 void ChromotingHost::OnSessionChannelsConnected(ClientSession* client) { |
| 226 DCHECK(CalledOnValidThread()); | 230 DCHECK(CalledOnValidThread()); |
| 227 | 231 |
| 228 // Notify observers. | 232 // Notify observers. |
| 229 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, | 233 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, |
| 230 OnClientConnected(client->client_jid())); | 234 OnClientConnected(client->client_jid())); |
| 231 } | 235 } |
| 232 | 236 |
| 237 void ChromotingHost::OnSessionClientCapabilities(ClientSession* client) { |
| 238 DCHECK(CalledOnValidThread()); |
| 239 |
| 240 // Create extension sessions from each registered extension for this client. |
| 241 for (HostExtensionList::iterator extension = extensions_.begin(); |
| 242 extension != extensions_.end(); ++extension) { |
| 243 scoped_ptr<HostExtensionSession> extension_session = |
| 244 (*extension)->CreateExtensionSession(client); |
| 245 if (extension_session) |
| 246 client->AddExtensionSession(extension_session.Pass()); |
| 247 } |
| 248 } |
| 249 |
| 233 void ChromotingHost::OnSessionAuthenticationFailed(ClientSession* client) { | 250 void ChromotingHost::OnSessionAuthenticationFailed(ClientSession* client) { |
| 234 DCHECK(CalledOnValidThread()); | 251 DCHECK(CalledOnValidThread()); |
| 235 | 252 |
| 236 // Notify observers. | 253 // Notify observers. |
| 237 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, | 254 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, |
| 238 OnAccessDenied(client->client_jid())); | 255 OnAccessDenied(client->client_jid())); |
| 239 } | 256 } |
| 240 | 257 |
| 241 void ChromotingHost::OnSessionClosed(ClientSession* client) { | 258 void ChromotingHost::OnSessionClosed(ClientSession* client) { |
| 242 DCHECK(CalledOnValidThread()); | 259 DCHECK(CalledOnValidThread()); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 audio_task_runner_, | 330 audio_task_runner_, |
| 314 input_task_runner_, | 331 input_task_runner_, |
| 315 video_capture_task_runner_, | 332 video_capture_task_runner_, |
| 316 video_encode_task_runner_, | 333 video_encode_task_runner_, |
| 317 network_task_runner_, | 334 network_task_runner_, |
| 318 ui_task_runner_, | 335 ui_task_runner_, |
| 319 connection.Pass(), | 336 connection.Pass(), |
| 320 desktop_environment_factory_, | 337 desktop_environment_factory_, |
| 321 max_session_duration_, | 338 max_session_duration_, |
| 322 pairing_registry_); | 339 pairing_registry_); |
| 340 |
| 341 // Registers capabilities provided by host extensions. |
| 342 for (HostExtensionList::iterator extension = extensions_.begin(); |
| 343 extension != extensions_.end(); ++extension) { |
| 344 client->AddHostCapabilities((*extension)->GetCapabilities()); |
| 345 } |
| 346 |
| 323 clients_.push_back(client); | 347 clients_.push_back(client); |
| 324 } | 348 } |
| 325 | 349 |
| 326 void ChromotingHost::set_protocol_config( | 350 void ChromotingHost::set_protocol_config( |
| 327 scoped_ptr<protocol::CandidateSessionConfig> config) { | 351 scoped_ptr<protocol::CandidateSessionConfig> config) { |
| 328 DCHECK(CalledOnValidThread()); | 352 DCHECK(CalledOnValidThread()); |
| 329 DCHECK(config.get()); | 353 DCHECK(config.get()); |
| 330 DCHECK(!started_); | 354 DCHECK(!started_); |
| 331 protocol_config_ = config.Pass(); | 355 protocol_config_ = config.Pass(); |
| 332 } | 356 } |
| 333 | 357 |
| 334 void ChromotingHost::DisconnectAllClients() { | 358 void ChromotingHost::DisconnectAllClients() { |
| 335 DCHECK(CalledOnValidThread()); | 359 DCHECK(CalledOnValidThread()); |
| 336 | 360 |
| 337 while (!clients_.empty()) { | 361 while (!clients_.empty()) { |
| 338 size_t size = clients_.size(); | 362 size_t size = clients_.size(); |
| 339 clients_.front()->DisconnectSession(); | 363 clients_.front()->DisconnectSession(); |
| 340 CHECK_EQ(clients_.size(), size - 1); | 364 CHECK_EQ(clients_.size(), size - 1); |
| 341 } | 365 } |
| 342 } | 366 } |
| 343 | 367 |
| 344 } // namespace remoting | 368 } // namespace remoting |
| OLD | NEW |