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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 : desktop_environment_factory_(desktop_environment_factory), | 73 : desktop_environment_factory_(desktop_environment_factory), |
74 session_manager_(session_manager.Pass()), | 74 session_manager_(session_manager.Pass()), |
75 audio_task_runner_(audio_task_runner), | 75 audio_task_runner_(audio_task_runner), |
76 input_task_runner_(input_task_runner), | 76 input_task_runner_(input_task_runner), |
77 video_capture_task_runner_(video_capture_task_runner), | 77 video_capture_task_runner_(video_capture_task_runner), |
78 video_encode_task_runner_(video_encode_task_runner), | 78 video_encode_task_runner_(video_encode_task_runner), |
79 network_task_runner_(network_task_runner), | 79 network_task_runner_(network_task_runner), |
80 ui_task_runner_(ui_task_runner), | 80 ui_task_runner_(ui_task_runner), |
81 signal_strategy_(signal_strategy), | 81 signal_strategy_(signal_strategy), |
82 started_(false), | 82 started_(false), |
| 83 exit_code_(kSuccessExitCode), |
83 protocol_config_(protocol::CandidateSessionConfig::CreateDefault()), | 84 protocol_config_(protocol::CandidateSessionConfig::CreateDefault()), |
84 login_backoff_(&kDefaultBackoffPolicy), | 85 login_backoff_(&kDefaultBackoffPolicy), |
85 authenticating_client_(false), | 86 authenticating_client_(false), |
86 reject_authenticating_client_(false), | 87 reject_authenticating_client_(false), |
87 enable_curtaining_(false), | 88 enable_curtaining_(false), |
88 weak_factory_(this) { | 89 weak_factory_(this) { |
89 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 90 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
90 DCHECK(signal_strategy); | 91 DCHECK(signal_strategy); |
91 | 92 |
92 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); | 93 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); |
(...skipping 10 matching lines...) Expand all Loading... |
103 while (!clients_.empty()) { | 104 while (!clients_.empty()) { |
104 clients_.front()->DisconnectSession(); | 105 clients_.front()->DisconnectSession(); |
105 } | 106 } |
106 | 107 |
107 // Destroy the session manager to make sure that |signal_strategy_| does not | 108 // Destroy the session manager to make sure that |signal_strategy_| does not |
108 // have any listeners registered. | 109 // have any listeners registered. |
109 session_manager_.reset(); | 110 session_manager_.reset(); |
110 | 111 |
111 // Notify observers. | 112 // Notify observers. |
112 if (started_) | 113 if (started_) |
113 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, OnShutdown()); | 114 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, |
| 115 OnShutdown(exit_code_)); |
114 } | 116 } |
115 | 117 |
116 void ChromotingHost::Start(const std::string& host_owner_email) { | 118 void ChromotingHost::Start(const std::string& host_owner_email) { |
117 DCHECK(CalledOnValidThread()); | 119 DCHECK(CalledOnValidThread()); |
118 DCHECK(!started_); | 120 DCHECK(!started_); |
119 | 121 |
120 HOST_LOG << "Starting host"; | 122 HOST_LOG << "Starting host"; |
121 started_ = true; | 123 started_ = true; |
122 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, | 124 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, |
123 OnStart(host_owner_email)); | 125 OnStart(host_owner_email)); |
124 | 126 |
125 // Start the SessionManager, supplying this ChromotingHost as the listener. | 127 // Start the SessionManager, supplying this ChromotingHost as the listener. |
126 session_manager_->Init(signal_strategy_, this); | 128 session_manager_->Init(signal_strategy_, this); |
127 } | 129 } |
128 | 130 |
| 131 void ChromotingHost::SetExitCode(HostExitCodes exit_code) { |
| 132 exit_code_ = exit_code; |
| 133 } |
| 134 |
129 void ChromotingHost::AddStatusObserver(HostStatusObserver* observer) { | 135 void ChromotingHost::AddStatusObserver(HostStatusObserver* observer) { |
130 DCHECK(CalledOnValidThread()); | 136 DCHECK(CalledOnValidThread()); |
131 status_observers_.AddObserver(observer); | 137 status_observers_.AddObserver(observer); |
132 } | 138 } |
133 | 139 |
134 void ChromotingHost::RemoveStatusObserver(HostStatusObserver* observer) { | 140 void ChromotingHost::RemoveStatusObserver(HostStatusObserver* observer) { |
135 DCHECK(CalledOnValidThread()); | 141 DCHECK(CalledOnValidThread()); |
136 status_observers_.RemoveObserver(observer); | 142 status_observers_.RemoveObserver(observer); |
137 } | 143 } |
138 | 144 |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 DCHECK(CalledOnValidThread()); | 337 DCHECK(CalledOnValidThread()); |
332 | 338 |
333 while (!clients_.empty()) { | 339 while (!clients_.empty()) { |
334 size_t size = clients_.size(); | 340 size_t size = clients_.size(); |
335 clients_.front()->DisconnectSession(); | 341 clients_.front()->DisconnectSession(); |
336 CHECK_EQ(clients_.size(), size - 1); | 342 CHECK_EQ(clients_.size(), size - 1); |
337 } | 343 } |
338 } | 344 } |
339 | 345 |
340 } // namespace remoting | 346 } // namespace remoting |
OLD | NEW |