From 148dc60d40292ee6b8fd40255cce8fb0463c760a Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 29 Nov 2020 12:30:40 +0300 Subject: [PATCH] Support pumping non-delayed events in async::event_loop --- libs/async/include/psemek/async/event_loop.hpp | 3 +++ libs/async/source/event_loop.cpp | 10 ++++++++++ 2 files changed, 13 insertions(+) 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)(); + } + } + }