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 // This file implements the Windows service controlling Me2Me host processes | 5 // This file implements the Windows service controlling Me2Me host processes |
6 // running within user sessions. | 6 // running within user sessions. |
7 | 7 |
8 #include "remoting/host/desktop_process.h" | 8 #include "remoting/host/desktop_process.h" |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 const std::string& daemon_channel_name) | 29 const std::string& daemon_channel_name) |
30 : caller_task_runner_(caller_task_runner), | 30 : caller_task_runner_(caller_task_runner), |
31 input_task_runner_(input_task_runner), | 31 input_task_runner_(input_task_runner), |
32 daemon_channel_name_(daemon_channel_name) { | 32 daemon_channel_name_(daemon_channel_name) { |
33 DCHECK(caller_task_runner_->BelongsToCurrentThread()); | 33 DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
34 DCHECK_EQ(base::MessageLoop::current()->type(), base::MessageLoop::TYPE_UI); | 34 DCHECK_EQ(base::MessageLoop::current()->type(), base::MessageLoop::TYPE_UI); |
35 } | 35 } |
36 | 36 |
37 DesktopProcess::~DesktopProcess() { | 37 DesktopProcess::~DesktopProcess() { |
38 DCHECK(!daemon_channel_); | 38 DCHECK(!daemon_channel_); |
39 DCHECK(!desktop_agent_); | 39 DCHECK(!desktop_agent_.get()); |
40 } | 40 } |
41 | 41 |
42 DesktopEnvironmentFactory& DesktopProcess::desktop_environment_factory() { | 42 DesktopEnvironmentFactory& DesktopProcess::desktop_environment_factory() { |
43 DCHECK(caller_task_runner_->BelongsToCurrentThread()); | 43 DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
44 | 44 |
45 return *desktop_environment_factory_; | 45 return *desktop_environment_factory_; |
46 } | 46 } |
47 | 47 |
48 void DesktopProcess::OnNetworkProcessDisconnected() { | 48 void DesktopProcess::OnNetworkProcessDisconnected() { |
49 DCHECK(caller_task_runner_->BelongsToCurrentThread()); | 49 DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
(...skipping 22 matching lines...) Expand all Loading... |
72 | 72 |
73 void DesktopProcess::OnChannelConnected(int32 peer_pid) { | 73 void DesktopProcess::OnChannelConnected(int32 peer_pid) { |
74 DCHECK(caller_task_runner_->BelongsToCurrentThread()); | 74 DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
75 | 75 |
76 VLOG(1) << "IPC: desktop <- daemon (" << peer_pid << ")"; | 76 VLOG(1) << "IPC: desktop <- daemon (" << peer_pid << ")"; |
77 } | 77 } |
78 | 78 |
79 void DesktopProcess::OnChannelError() { | 79 void DesktopProcess::OnChannelError() { |
80 // Shutdown the desktop process. | 80 // Shutdown the desktop process. |
81 daemon_channel_.reset(); | 81 daemon_channel_.reset(); |
82 if (desktop_agent_) { | 82 if (desktop_agent_.get()) { |
83 desktop_agent_->Stop(); | 83 desktop_agent_->Stop(); |
84 desktop_agent_ = NULL; | 84 desktop_agent_ = NULL; |
85 } | 85 } |
86 | 86 |
87 caller_task_runner_ = NULL; | 87 caller_task_runner_ = NULL; |
88 input_task_runner_ = NULL; | 88 input_task_runner_ = NULL; |
89 desktop_environment_factory_.reset(); | 89 desktop_environment_factory_.reset(); |
90 } | 90 } |
91 | 91 |
92 bool DesktopProcess::Start( | 92 bool DesktopProcess::Start( |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 caller_task_runner_ = NULL; | 135 caller_task_runner_ = NULL; |
136 input_task_runner_ = NULL; | 136 input_task_runner_ = NULL; |
137 desktop_environment_factory_.reset(); | 137 desktop_environment_factory_.reset(); |
138 return false; | 138 return false; |
139 } | 139 } |
140 | 140 |
141 // Connect to the daemon. | 141 // Connect to the daemon. |
142 daemon_channel_.reset(new IPC::ChannelProxy(daemon_channel_name_, | 142 daemon_channel_.reset(new IPC::ChannelProxy(daemon_channel_name_, |
143 IPC::Channel::MODE_CLIENT, | 143 IPC::Channel::MODE_CLIENT, |
144 this, | 144 this, |
145 io_task_runner)); | 145 io_task_runner.get())); |
146 | 146 |
147 // Pass |desktop_pipe| to the daemon. | 147 // Pass |desktop_pipe| to the daemon. |
148 daemon_channel_->Send( | 148 daemon_channel_->Send( |
149 new ChromotingDesktopDaemonMsg_DesktopAttached(desktop_pipe)); | 149 new ChromotingDesktopDaemonMsg_DesktopAttached(desktop_pipe)); |
150 | 150 |
151 return true; | 151 return true; |
152 } | 152 } |
153 | 153 |
154 void DesktopProcess::OnCrash(const std::string& function_name, | 154 void DesktopProcess::OnCrash(const std::string& function_name, |
155 const std::string& file_name, | 155 const std::string& file_name, |
156 const int& line_number) { | 156 const int& line_number) { |
157 char message[1024]; | 157 char message[1024]; |
158 base::snprintf(message, sizeof(message), | 158 base::snprintf(message, sizeof(message), |
159 "Requested by %s at %s, line %d.", | 159 "Requested by %s at %s, line %d.", |
160 function_name.c_str(), file_name.c_str(), line_number); | 160 function_name.c_str(), file_name.c_str(), line_number); |
161 base::debug::Alias(message); | 161 base::debug::Alias(message); |
162 | 162 |
163 // The daemon requested us to crash the process. | 163 // The daemon requested us to crash the process. |
164 CHECK(false) << message; | 164 CHECK(false) << message; |
165 } | 165 } |
166 | 166 |
167 } // namespace remoting | 167 } // namespace remoting |
OLD | NEW |