Index: mojo/system/waiter_list.cc |
diff --git a/mojo/system/waiter_list.cc b/mojo/system/waiter_list.cc |
index 6f2c44411eb10d89fef8229a30fa51e3b3b73665..c398c8439d2d6f95e77fa1b75533503296968325 100644 |
--- a/mojo/system/waiter_list.cc |
+++ b/mojo/system/waiter_list.cc |
@@ -5,6 +5,7 @@ |
#include "mojo/system/waiter_list.h" |
#include "base/logging.h" |
+#include "mojo/system/wait_flags_state.h" |
#include "mojo/system/waiter.h" |
namespace mojo { |
@@ -17,6 +18,17 @@ WaiterList::~WaiterList() { |
DCHECK(waiters_.empty()); |
} |
+void WaiterList::AwakeWaitersForStateChange(const WaitFlagsState& state) { |
+ for (WaiterInfoList::iterator it = waiters_.begin(); it != waiters_.end(); |
+ ++it) { |
+ if (state.satisfies(it->flags)) |
+ it->waiter->Awake(it->wake_result); |
+ else if (!state.can_satisfy(it->flags)) |
+ it->waiter->Awake(MOJO_RESULT_FAILED_PRECONDITION); |
+ } |
+} |
+ |
+//FIXME Remove: |
void WaiterList::AwakeWaitersForStateChange(MojoWaitFlags satisfied_flags, |
MojoWaitFlags satisfiable_flags) { |
for (WaiterInfoList::iterator it = waiters_.begin(); it != waiters_.end(); |