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

Side by Side Diff: mojo/system/data_pipe.cc

Issue 345463003: Mojo: MojoWaitFlags -> MojoHandleSignals. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 | « mojo/system/data_pipe.h ('k') | mojo/system/data_pipe_consumer_dispatcher.h » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/system/data_pipe.h" 5 #include "mojo/system/data_pipe.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 WaitFlagsState new_producer_state = ProducerGetWaitFlagsStateNoLock(); 170 WaitFlagsState new_producer_state = ProducerGetWaitFlagsStateNoLock();
171 if (new_producer_state.satisfies(MOJO_WAIT_FLAG_WRITABLE)) 171 if (new_producer_state.satisfies(MOJO_WAIT_FLAG_WRITABLE))
172 AwakeProducerWaitersForStateChangeNoLock(new_producer_state); 172 AwakeProducerWaitersForStateChangeNoLock(new_producer_state);
173 WaitFlagsState new_consumer_state = ConsumerGetWaitFlagsStateNoLock(); 173 WaitFlagsState new_consumer_state = ConsumerGetWaitFlagsStateNoLock();
174 if (!new_consumer_state.equals(old_consumer_state)) 174 if (!new_consumer_state.equals(old_consumer_state))
175 AwakeConsumerWaitersForStateChangeNoLock(new_consumer_state); 175 AwakeConsumerWaitersForStateChangeNoLock(new_consumer_state);
176 return rv; 176 return rv;
177 } 177 }
178 178
179 MojoResult DataPipe::ProducerAddWaiter(Waiter* waiter, 179 MojoResult DataPipe::ProducerAddWaiter(Waiter* waiter,
180 MojoWaitFlags flags, 180 MojoHandleSignals signals,
181 uint32_t context) { 181 uint32_t context) {
182 base::AutoLock locker(lock_); 182 base::AutoLock locker(lock_);
183 DCHECK(has_local_producer_no_lock()); 183 DCHECK(has_local_producer_no_lock());
184 184
185 WaitFlagsState producer_state = ProducerGetWaitFlagsStateNoLock(); 185 WaitFlagsState producer_state = ProducerGetWaitFlagsStateNoLock();
186 if (producer_state.satisfies(flags)) 186 if (producer_state.satisfies(signals))
187 return MOJO_RESULT_ALREADY_EXISTS; 187 return MOJO_RESULT_ALREADY_EXISTS;
188 if (!producer_state.can_satisfy(flags)) 188 if (!producer_state.can_satisfy(signals))
189 return MOJO_RESULT_FAILED_PRECONDITION; 189 return MOJO_RESULT_FAILED_PRECONDITION;
190 190
191 producer_waiter_list_->AddWaiter(waiter, flags, context); 191 producer_waiter_list_->AddWaiter(waiter, signals, context);
192 return MOJO_RESULT_OK; 192 return MOJO_RESULT_OK;
193 } 193 }
194 194
195 void DataPipe::ProducerRemoveWaiter(Waiter* waiter) { 195 void DataPipe::ProducerRemoveWaiter(Waiter* waiter) {
196 base::AutoLock locker(lock_); 196 base::AutoLock locker(lock_);
197 DCHECK(has_local_producer_no_lock()); 197 DCHECK(has_local_producer_no_lock());
198 producer_waiter_list_->RemoveWaiter(waiter); 198 producer_waiter_list_->RemoveWaiter(waiter);
199 } 199 }
200 200
201 bool DataPipe::ProducerIsBusy() const { 201 bool DataPipe::ProducerIsBusy() const {
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 WaitFlagsState new_consumer_state = ConsumerGetWaitFlagsStateNoLock(); 322 WaitFlagsState new_consumer_state = ConsumerGetWaitFlagsStateNoLock();
323 if (new_consumer_state.satisfies(MOJO_WAIT_FLAG_READABLE)) 323 if (new_consumer_state.satisfies(MOJO_WAIT_FLAG_READABLE))
324 AwakeConsumerWaitersForStateChangeNoLock(new_consumer_state); 324 AwakeConsumerWaitersForStateChangeNoLock(new_consumer_state);
325 WaitFlagsState new_producer_state = ProducerGetWaitFlagsStateNoLock(); 325 WaitFlagsState new_producer_state = ProducerGetWaitFlagsStateNoLock();
326 if (!new_producer_state.equals(old_producer_state)) 326 if (!new_producer_state.equals(old_producer_state))
327 AwakeProducerWaitersForStateChangeNoLock(new_producer_state); 327 AwakeProducerWaitersForStateChangeNoLock(new_producer_state);
328 return rv; 328 return rv;
329 } 329 }
330 330
331 MojoResult DataPipe::ConsumerAddWaiter(Waiter* waiter, 331 MojoResult DataPipe::ConsumerAddWaiter(Waiter* waiter,
332 MojoWaitFlags flags, 332 MojoHandleSignals signals,
333 uint32_t context) { 333 uint32_t context) {
334 base::AutoLock locker(lock_); 334 base::AutoLock locker(lock_);
335 DCHECK(has_local_consumer_no_lock()); 335 DCHECK(has_local_consumer_no_lock());
336 336
337 WaitFlagsState consumer_state = ConsumerGetWaitFlagsStateNoLock(); 337 WaitFlagsState consumer_state = ConsumerGetWaitFlagsStateNoLock();
338 if (consumer_state.satisfies(flags)) 338 if (consumer_state.satisfies(signals))
339 return MOJO_RESULT_ALREADY_EXISTS; 339 return MOJO_RESULT_ALREADY_EXISTS;
340 if (!consumer_state.can_satisfy(flags)) 340 if (!consumer_state.can_satisfy(signals))
341 return MOJO_RESULT_FAILED_PRECONDITION; 341 return MOJO_RESULT_FAILED_PRECONDITION;
342 342
343 consumer_waiter_list_->AddWaiter(waiter, flags, context); 343 consumer_waiter_list_->AddWaiter(waiter, signals, context);
344 return MOJO_RESULT_OK; 344 return MOJO_RESULT_OK;
345 } 345 }
346 346
347 void DataPipe::ConsumerRemoveWaiter(Waiter* waiter) { 347 void DataPipe::ConsumerRemoveWaiter(Waiter* waiter) {
348 base::AutoLock locker(lock_); 348 base::AutoLock locker(lock_);
349 DCHECK(has_local_consumer_no_lock()); 349 DCHECK(has_local_consumer_no_lock());
350 consumer_waiter_list_->RemoveWaiter(waiter); 350 consumer_waiter_list_->RemoveWaiter(waiter);
351 } 351 }
352 352
353 bool DataPipe::ConsumerIsBusy() const { 353 bool DataPipe::ConsumerIsBusy() const {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 void DataPipe::AwakeConsumerWaitersForStateChangeNoLock( 392 void DataPipe::AwakeConsumerWaitersForStateChangeNoLock(
393 const WaitFlagsState& new_consumer_state) { 393 const WaitFlagsState& new_consumer_state) {
394 lock_.AssertAcquired(); 394 lock_.AssertAcquired();
395 if (!has_local_consumer_no_lock()) 395 if (!has_local_consumer_no_lock())
396 return; 396 return;
397 consumer_waiter_list_->AwakeWaitersForStateChange(new_consumer_state); 397 consumer_waiter_list_->AwakeWaitersForStateChange(new_consumer_state);
398 } 398 }
399 399
400 } // namespace system 400 } // namespace system
401 } // namespace mojo 401 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/data_pipe.h ('k') | mojo/system/data_pipe_consumer_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698