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

Side by Side Diff: mojo/system/waiter_list.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/waiter_list.h ('k') | mojo/system/waiter_test_utils.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/waiter_list.h" 5 #include "mojo/system/waiter_list.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "mojo/system/wait_flags_state.h" 8 #include "mojo/system/wait_flags_state.h"
9 #include "mojo/system/waiter.h" 9 #include "mojo/system/waiter.h"
10 10
11 namespace mojo { 11 namespace mojo {
12 namespace system { 12 namespace system {
13 13
14 WaiterList::WaiterList() { 14 WaiterList::WaiterList() {
15 } 15 }
16 16
17 WaiterList::~WaiterList() { 17 WaiterList::~WaiterList() {
18 DCHECK(waiters_.empty()); 18 DCHECK(waiters_.empty());
19 } 19 }
20 20
21 void WaiterList::AwakeWaitersForStateChange(const WaitFlagsState& state) { 21 void WaiterList::AwakeWaitersForStateChange(const WaitFlagsState& state) {
22 for (WaiterInfoList::iterator it = waiters_.begin(); it != waiters_.end(); 22 for (WaiterInfoList::iterator it = waiters_.begin(); it != waiters_.end();
23 ++it) { 23 ++it) {
24 if (state.satisfies(it->flags)) 24 if (state.satisfies(it->signals))
25 it->waiter->Awake(MOJO_RESULT_OK, it->context); 25 it->waiter->Awake(MOJO_RESULT_OK, it->context);
26 else if (!state.can_satisfy(it->flags)) 26 else if (!state.can_satisfy(it->signals))
27 it->waiter->Awake(MOJO_RESULT_FAILED_PRECONDITION, it->context); 27 it->waiter->Awake(MOJO_RESULT_FAILED_PRECONDITION, it->context);
28 } 28 }
29 } 29 }
30 30
31 void WaiterList::CancelAllWaiters() { 31 void WaiterList::CancelAllWaiters() {
32 for (WaiterInfoList::iterator it = waiters_.begin(); it != waiters_.end(); 32 for (WaiterInfoList::iterator it = waiters_.begin(); it != waiters_.end();
33 ++it) { 33 ++it) {
34 it->waiter->Awake(MOJO_RESULT_CANCELLED, it->context); 34 it->waiter->Awake(MOJO_RESULT_CANCELLED, it->context);
35 } 35 }
36 waiters_.clear(); 36 waiters_.clear();
37 } 37 }
38 38
39 void WaiterList::AddWaiter(Waiter* waiter, 39 void WaiterList::AddWaiter(Waiter* waiter,
40 MojoWaitFlags flags, 40 MojoHandleSignals signals,
41 uint32_t context) { 41 uint32_t context) {
42 waiters_.push_back(WaiterInfo(waiter, flags, context)); 42 waiters_.push_back(WaiterInfo(waiter, signals, context));
43 } 43 }
44 44
45 void WaiterList::RemoveWaiter(Waiter* waiter) { 45 void WaiterList::RemoveWaiter(Waiter* waiter) {
46 // We allow a thread to wait on the same handle multiple times simultaneously, 46 // We allow a thread to wait on the same handle multiple times simultaneously,
47 // so we need to scan the entire list and remove all occurrences of |waiter|. 47 // so we need to scan the entire list and remove all occurrences of |waiter|.
48 for (WaiterInfoList::iterator it = waiters_.begin(); it != waiters_.end();) { 48 for (WaiterInfoList::iterator it = waiters_.begin(); it != waiters_.end();) {
49 WaiterInfoList::iterator maybe_delete = it; 49 WaiterInfoList::iterator maybe_delete = it;
50 ++it; 50 ++it;
51 if (maybe_delete->waiter == waiter) 51 if (maybe_delete->waiter == waiter)
52 waiters_.erase(maybe_delete); 52 waiters_.erase(maybe_delete);
53 } 53 }
54 } 54 }
55 55
56 } // namespace system 56 } // namespace system
57 } // namespace mojo 57 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/waiter_list.h ('k') | mojo/system/waiter_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698