Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(380)

Side by Side Diff: remoting/host/desktop_session_agent.cc

Issue 307463004: Remove PlatformFile from remoting (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compilation Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « remoting/host/desktop_session_agent.h ('k') | remoting/host/desktop_session_proxy.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/desktop_session_agent.h" 5 #include "remoting/host/desktop_session_agent.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/shared_memory.h" 9 #include "base/memory/shared_memory.h"
10 #include "ipc/ipc_channel_proxy.h" 10 #include "ipc/ipc_channel_proxy.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, 113 scoped_refptr<AutoThreadTaskRunner> caller_task_runner,
114 scoped_refptr<AutoThreadTaskRunner> input_task_runner, 114 scoped_refptr<AutoThreadTaskRunner> input_task_runner,
115 scoped_refptr<AutoThreadTaskRunner> io_task_runner, 115 scoped_refptr<AutoThreadTaskRunner> io_task_runner,
116 scoped_refptr<AutoThreadTaskRunner> video_capture_task_runner) 116 scoped_refptr<AutoThreadTaskRunner> video_capture_task_runner)
117 : audio_capture_task_runner_(audio_capture_task_runner), 117 : audio_capture_task_runner_(audio_capture_task_runner),
118 caller_task_runner_(caller_task_runner), 118 caller_task_runner_(caller_task_runner),
119 input_task_runner_(input_task_runner), 119 input_task_runner_(input_task_runner),
120 io_task_runner_(io_task_runner), 120 io_task_runner_(io_task_runner),
121 video_capture_task_runner_(video_capture_task_runner), 121 video_capture_task_runner_(video_capture_task_runner),
122 control_factory_(this), 122 control_factory_(this),
123 desktop_pipe_(IPC::InvalidPlatformFileForTransit()),
124 next_shared_buffer_id_(1), 123 next_shared_buffer_id_(1),
125 shared_buffers_(0), 124 shared_buffers_(0),
126 started_(false) { 125 started_(false) {
127 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 126 DCHECK(caller_task_runner_->BelongsToCurrentThread());
128 } 127 }
129 128
130 bool DesktopSessionAgent::OnMessageReceived(const IPC::Message& message) { 129 bool DesktopSessionAgent::OnMessageReceived(const IPC::Message& message) {
131 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 130 DCHECK(caller_task_runner_->BelongsToCurrentThread());
132 131
133 bool handled = true; 132 bool handled = true;
(...skipping 23 matching lines...) Expand all
157 156
158 CHECK(handled) << "Received unexpected IPC type: " << message.type(); 157 CHECK(handled) << "Received unexpected IPC type: " << message.type();
159 return handled; 158 return handled;
160 } 159 }
161 160
162 void DesktopSessionAgent::OnChannelConnected(int32 peer_pid) { 161 void DesktopSessionAgent::OnChannelConnected(int32 peer_pid) {
163 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 162 DCHECK(caller_task_runner_->BelongsToCurrentThread());
164 163
165 VLOG(1) << "IPC: desktop <- network (" << peer_pid << ")"; 164 VLOG(1) << "IPC: desktop <- network (" << peer_pid << ")";
166 165
167 CloseDesktopPipeHandle(); 166 desktop_pipe_.Close();
168 } 167 }
169 168
170 void DesktopSessionAgent::OnChannelError() { 169 void DesktopSessionAgent::OnChannelError() {
171 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 170 DCHECK(caller_task_runner_->BelongsToCurrentThread());
172 171
173 // Make sure the channel is closed. 172 // Make sure the channel is closed.
174 network_channel_.reset(); 173 network_channel_.reset();
175 CloseDesktopPipeHandle(); 174 desktop_pipe_.Close();
176 175
177 // Notify the caller that the channel has been disconnected. 176 // Notify the caller that the channel has been disconnected.
178 if (delegate_.get()) 177 if (delegate_.get())
179 delegate_->OnNetworkProcessDisconnected(); 178 delegate_->OnNetworkProcessDisconnected();
180 } 179 }
181 180
182 webrtc::SharedMemory* DesktopSessionAgent::CreateSharedMemory(size_t size) { 181 webrtc::SharedMemory* DesktopSessionAgent::CreateSharedMemory(size_t size) {
183 DCHECK(video_capture_task_runner_->BelongsToCurrentThread()); 182 DCHECK(video_capture_task_runner_->BelongsToCurrentThread());
184 183
185 scoped_ptr<SharedBuffer> buffer = 184 scoped_ptr<SharedBuffer> buffer =
(...skipping 23 matching lines...) Expand all
209 208
210 return buffer.release(); 209 return buffer.release();
211 } 210 }
212 211
213 DesktopSessionAgent::~DesktopSessionAgent() { 212 DesktopSessionAgent::~DesktopSessionAgent() {
214 DCHECK(!audio_capturer_); 213 DCHECK(!audio_capturer_);
215 DCHECK(!desktop_environment_); 214 DCHECK(!desktop_environment_);
216 DCHECK(!network_channel_); 215 DCHECK(!network_channel_);
217 DCHECK(!screen_controls_); 216 DCHECK(!screen_controls_);
218 DCHECK(!video_capturer_); 217 DCHECK(!video_capturer_);
219
220 CloseDesktopPipeHandle();
221 } 218 }
222 219
223 const std::string& DesktopSessionAgent::client_jid() const { 220 const std::string& DesktopSessionAgent::client_jid() const {
224 return client_jid_; 221 return client_jid_;
225 } 222 }
226 223
227 void DesktopSessionAgent::DisconnectSession() { 224 void DesktopSessionAgent::DisconnectSession() {
228 SendToNetwork(new ChromotingDesktopNetworkMsg_DisconnectSession()); 225 SendToNetwork(new ChromotingDesktopNetworkMsg_DisconnectSession());
229 } 226 }
230 227
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 361 DCHECK(caller_task_runner_->BelongsToCurrentThread());
365 DCHECK(delegate_.get() == NULL); 362 DCHECK(delegate_.get() == NULL);
366 363
367 delegate_ = delegate; 364 delegate_ = delegate;
368 365
369 // Create an IPC channel to communicate with the network process. 366 // Create an IPC channel to communicate with the network process.
370 bool result = CreateConnectedIpcChannel(io_task_runner_, 367 bool result = CreateConnectedIpcChannel(io_task_runner_,
371 this, 368 this,
372 &desktop_pipe_, 369 &desktop_pipe_,
373 &network_channel_); 370 &network_channel_);
374 *desktop_pipe_out = desktop_pipe_; 371 base::PlatformFile raw_desktop_pipe = desktop_pipe_.GetPlatformFile();
372 #if defined(OS_WIN)
373 *desktop_pipe_out = IPC::PlatformFileForTransit(raw_desktop_pipe);
374 #elif defined(OS_POSIX)
375 *desktop_pipe_out = IPC::PlatformFileForTransit(raw_desktop_pipe, false);
376 #else
377 #error Unsupported platform.
378 #endif
375 return result; 379 return result;
376 } 380 }
377 381
378 void DesktopSessionAgent::Stop() { 382 void DesktopSessionAgent::Stop() {
379 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 383 DCHECK(caller_task_runner_->BelongsToCurrentThread());
380 384
381 delegate_.reset(); 385 delegate_.reset();
382 386
383 // Make sure the channel is closed. 387 // Make sure the channel is closed.
384 network_channel_.reset(); 388 network_channel_.reset();
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 559
556 void DesktopSessionAgent::OnSharedBufferDeleted(int id) { 560 void DesktopSessionAgent::OnSharedBufferDeleted(int id) {
557 DCHECK(video_capture_task_runner_->BelongsToCurrentThread()); 561 DCHECK(video_capture_task_runner_->BelongsToCurrentThread());
558 DCHECK(id != 0); 562 DCHECK(id != 0);
559 563
560 shared_buffers_--; 564 shared_buffers_--;
561 DCHECK_GE(shared_buffers_, 0); 565 DCHECK_GE(shared_buffers_, 0);
562 SendToNetwork(new ChromotingDesktopNetworkMsg_ReleaseSharedBuffer(id)); 566 SendToNetwork(new ChromotingDesktopNetworkMsg_ReleaseSharedBuffer(id));
563 } 567 }
564 568
565 void DesktopSessionAgent::CloseDesktopPipeHandle() {
566 if (!(desktop_pipe_ == IPC::InvalidPlatformFileForTransit())) {
567 #if defined(OS_WIN)
568 base::ClosePlatformFile(desktop_pipe_);
569 #elif defined(OS_POSIX)
570 base::ClosePlatformFile(desktop_pipe_.fd);
571 #else // !defined(OS_POSIX)
572 #error Unsupported platform.
573 #endif // !defined(OS_POSIX)
574
575 desktop_pipe_ = IPC::InvalidPlatformFileForTransit();
576 }
577 }
578
579 } // namespace remoting 569 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/desktop_session_agent.h ('k') | remoting/host/desktop_session_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698