From 009498fae18df561452ffbfc799a8e8d95f1d52c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Fri, 17 Oct 2025 08:53:41 +0200 Subject: [PATCH] added type shortcuts in message_bus --- include/matador/utils/message_bus.hpp | 28 ++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/include/matador/utils/message_bus.hpp b/include/matador/utils/message_bus.hpp index e1b43ee..c919c3b 100644 --- a/include/matador/utils/message_bus.hpp +++ b/include/matador/utils/message_bus.hpp @@ -179,6 +179,22 @@ class message_bus { public: using HandlerId = uint64_t; /**< Type alias for handler IDs. */ + /** + * @brief Type alias for message filter functions. + * @tparam MessageType The type of message the filter operates on. + */ + template + using Filter = std::function; + + /** + * @brief Type alias for member function pointers used as message handlers. + * @tparam MessageType The type of message the handler processes. + * @tparam CallerClass The class that contains the member function. + */ + template + using MemberHandler = void (CallerClass::*)(const MessageType&); + + /** * @brief Constructs a new message_bus object. */ @@ -194,7 +210,7 @@ public: */ template subscription subscribe(std::function handler, - std::function filter = nullptr) + Filter filter = nullptr) { auto id = next_id_.fetch_add(1, std::memory_order_relaxed); std::unique_lock writeLock(mutex_); @@ -227,8 +243,9 @@ public: * @return A subscription object to manage the handler's registration. */ template - subscription subscribe(CallerClass* instance, void (CallerClass::*memberFn)(const MessageType&), - std::function filter = nullptr) + subscription subscribe(CallerClass* instance, + MemberHandler memberFn, + Filter filter = nullptr) { auto fn = [instance, memberFn](const MessageType& m) { (instance->*memberFn)(m); }; return subscribe(std::function(fn), std::move(filter)); @@ -245,8 +262,9 @@ public: * @return A subscription object to manage the handler's registration. */ template - subscription subscribe(std::shared_ptr instance, void (CallerClass::*memberFn)(const MessageType&), - std::function filter = nullptr) + subscription subscribe(std::shared_ptr instance, + MemberHandler memberFn, + Filter filter = nullptr) { std::weak_ptr w = instance; auto handler = [w, memberFn](const MessageType& m) {