diff --git a/libs/async/include/psemek/async/event_loop.hpp b/libs/async/include/psemek/async/event_loop.hpp index fc95fdaf..9efee81e 100644 --- a/libs/async/include/psemek/async/event_loop.hpp +++ b/libs/async/include/psemek/async/event_loop.hpp @@ -28,6 +28,9 @@ namespace psemek::async ~event_loop() override { stop(); } + // wait all non-delayed events + void pump(); + private: util::synchronized_queue queue_; }; diff --git a/libs/async/source/event_loop.cpp b/libs/async/source/event_loop.cpp index 3916b1a1..0968b214 100644 --- a/libs/async/source/event_loop.cpp +++ b/libs/async/source/event_loop.cpp @@ -49,4 +49,14 @@ namespace psemek::async return queue_.size(); } + void event_loop::pump() + { + while (true) + { + auto t = queue_.try_pop(); + if (!t) break; + (*t)(); + } + } + }