From ba5c856f154fcfbbb6643e32e020c1c3bc2e8feb Mon Sep 17 00:00:00 2001 From: Max Kellermann <max@musicpd.org> Date: Thu, 8 Nov 2018 14:19:57 +0100 Subject: [PATCH] events/MultiSocketMonitor: add method ForEachResult() --- src/event/MultiSocketMonitor.hxx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/event/MultiSocketMonitor.hxx b/src/event/MultiSocketMonitor.hxx index 3d063e6c3..37c50eb75 100644 --- a/src/event/MultiSocketMonitor.hxx +++ b/src/event/MultiSocketMonitor.hxx @@ -194,6 +194,19 @@ public: void ReplaceSocketList(pollfd *pfds, unsigned n) noexcept; #endif + /** + * Invoke a function for each socket which has become ready. + */ + template<typename F> + void ForEachReturnedEvent(F &&f) noexcept { + for (auto &i : fds) { + if (i.GetReturnedEvents() != 0) { + f(i.GetSocket(), i.GetReturnedEvents()); + i.ClearReturnedEvents(); + } + } + } + protected: /** * Override this method and update the socket registrations.