Index: mojo/edk/system/awakable_list.cc |
diff --git a/mojo/edk/system/awakable_list.cc b/mojo/edk/system/awakable_list.cc |
index 429e691a4c9e51a3d62e838885ff8e376f466dcf..2045f32dffa698984f3ed69148f43d142d5c89cd 100644 |
--- a/mojo/edk/system/awakable_list.cc |
+++ b/mojo/edk/system/awakable_list.cc |
@@ -39,6 +39,7 @@ void AwakableList::AwakeForStateChange(const HandleSignalsState& state) { |
} |
} |
awakables_.erase(last, awakables_.end()); |
+ watchers_.NotifyForStateChange(state); |
} |
void AwakableList::CancelAll() { |
@@ -47,6 +48,7 @@ void AwakableList::CancelAll() { |
it->awakable->Awake(MOJO_RESULT_CANCELLED, it->context); |
} |
awakables_.clear(); |
+ watchers_.NotifyClosed(); |
} |
void AwakableList::Add(Awakable* awakable, |
@@ -70,5 +72,16 @@ void AwakableList::Remove(Awakable* awakable) { |
awakables_.erase(last, awakables_.end()); |
} |
+MojoResult AwakableList::AddWatcher(MojoHandleSignals signals, |
+ const Watcher::WatchCallback& callback, |
+ uintptr_t context, |
+ const HandleSignalsState& current_state) { |
+ return watchers_.Add(signals, callback, context, current_state); |
+} |
+ |
+MojoResult AwakableList::RemoveWatcher(uintptr_t context) { |
+ return watchers_.Remove(context); |
+} |
+ |
} // namespace edk |
} // namespace mojo |