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.