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

Side by Side Diff: mojo/edk/system/shared_buffer_dispatcher.cc

Issue 1748503002: [mojo-edk] Add MojoWatch and MojoCancelWatch APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 9 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "mojo/edk/system/shared_buffer_dispatcher.h" 5 #include "mojo/edk/system/shared_buffer_dispatcher.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <limits> 10 #include <limits>
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 147
148 scoped_refptr<PlatformSharedBuffer> retval = shared_buffer_; 148 scoped_refptr<PlatformSharedBuffer> retval = shared_buffer_;
149 shared_buffer_ = nullptr; 149 shared_buffer_ = nullptr;
150 return retval; 150 return retval;
151 } 151 }
152 152
153 Dispatcher::Type SharedBufferDispatcher::GetType() const { 153 Dispatcher::Type SharedBufferDispatcher::GetType() const {
154 return Type::SHARED_BUFFER; 154 return Type::SHARED_BUFFER;
155 } 155 }
156 156
157 MojoResult SharedBufferDispatcher::Close() { 157 MojoResult SharedBufferDispatcher::Close(RequestContext* request_context) {
158 base::AutoLock lock(lock_); 158 base::AutoLock lock(lock_);
159 if (in_transit_) 159 if (in_transit_)
160 return MOJO_RESULT_INVALID_ARGUMENT; 160 return MOJO_RESULT_INVALID_ARGUMENT;
161 161
162 shared_buffer_ = nullptr; 162 shared_buffer_ = nullptr;
163 return MOJO_RESULT_OK; 163 return MOJO_RESULT_OK;
164 } 164 }
165 165
166 MojoResult SharedBufferDispatcher::DuplicateBufferHandle( 166 MojoResult SharedBufferDispatcher::DuplicateBufferHandle(
167 const MojoDuplicateBufferHandleOptions* options, 167 const MojoDuplicateBufferHandleOptions* options,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 224
225 handle_for_transit_ = shared_buffer_->DuplicatePlatformHandle(); 225 handle_for_transit_ = shared_buffer_->DuplicatePlatformHandle();
226 if (!handle_for_transit_.is_valid()) { 226 if (!handle_for_transit_.is_valid()) {
227 shared_buffer_ = nullptr; 227 shared_buffer_ = nullptr;
228 return false; 228 return false;
229 } 229 }
230 handles[0] = handle_for_transit_.get(); 230 handles[0] = handle_for_transit_.get();
231 return true; 231 return true;
232 } 232 }
233 233
234 bool SharedBufferDispatcher::BeginTransit() { 234 bool SharedBufferDispatcher::BeginTransit(RequestContext* request_context) {
235 base::AutoLock lock(lock_); 235 base::AutoLock lock(lock_);
236 if (in_transit_) 236 if (in_transit_)
237 return false; 237 return false;
238 in_transit_ = shared_buffer_ != nullptr; 238 in_transit_ = shared_buffer_ != nullptr;
239 return in_transit_; 239 return in_transit_;
240 } 240 }
241 241
242 void SharedBufferDispatcher::CompleteTransitAndClose() { 242 void SharedBufferDispatcher::CompleteTransitAndClose(
243 RequestContext* request_context) {
243 base::AutoLock lock(lock_); 244 base::AutoLock lock(lock_);
244 in_transit_ = false; 245 in_transit_ = false;
245 shared_buffer_ = nullptr; 246 shared_buffer_ = nullptr;
246 ignore_result(handle_for_transit_.release()); 247 ignore_result(handle_for_transit_.release());
247 } 248 }
248 249
249 void SharedBufferDispatcher::CancelTransit() { 250 void SharedBufferDispatcher::CancelTransit(
251 RequestContext* request_context) {
250 base::AutoLock lock(lock_); 252 base::AutoLock lock(lock_);
251 in_transit_ = false; 253 in_transit_ = false;
252 handle_for_transit_.reset(); 254 handle_for_transit_.reset();
253 } 255 }
254 256
255 SharedBufferDispatcher::SharedBufferDispatcher( 257 SharedBufferDispatcher::SharedBufferDispatcher(
256 scoped_refptr<PlatformSharedBuffer> shared_buffer) 258 scoped_refptr<PlatformSharedBuffer> shared_buffer)
257 : shared_buffer_(shared_buffer) { 259 : shared_buffer_(shared_buffer) {
258 DCHECK(shared_buffer_); 260 DCHECK(shared_buffer_);
259 } 261 }
(...skipping 29 matching lines...) Expand all
289 291
290 // Checks for fields beyond |flags|: 292 // Checks for fields beyond |flags|:
291 293
292 // (Nothing here yet.) 294 // (Nothing here yet.)
293 295
294 return MOJO_RESULT_OK; 296 return MOJO_RESULT_OK;
295 } 297 }
296 298
297 } // namespace edk 299 } // namespace edk
298 } // namespace mojo 300 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698