5 #ifndef DDS_ChannelMessageHandlersImpl_h 6 #define DDS_ChannelMessageHandlersImpl_h 12 namespace protocol_api
24 : m_function(_function)
33 typedef std::multimap<ECmdType, std::unique_ptr<SHandlerHlpFunc>> Listeners_t;
36 template <ECmdType _cmd,
typename Func>
40 m_registeredMessageHandlers.insert(Listeners_t::value_type(_cmd, std::move(func_ptr)));
43 template <
class... Args>
46 typedef std::function<bool(Args...)> Func_t;
47 auto functions = m_registeredMessageHandlers.equal_range(_cmd);
48 for (
auto it = functions.first; it != functions.second; ++it)
52 func(std::forward<Args>(args)...);
56 template <ECmdType _cmd>
59 return m_registeredMessageHandlers.count(_cmd);
63 Listeners_t m_registeredMessageHandlers;
Helpers for event dispatching.
Definition: ChannelMessageHandlersImpl.h:15
void dispatchMessageHandlers(ECmdType _cmd, Args &&... args)
Definition: ChannelMessageHandlersImpl.h:44
Definition: ChannelMessageHandlersImpl.h:19
Definition: dds-agent/src/AgentConnectionManager.h:16
void registerMessageHandler(Func _handler)
Definition: ChannelMessageHandlersImpl.h:37
T m_function
Definition: ChannelMessageHandlersImpl.h:21
size_t getNofMessageHandlers() const
Definition: ChannelMessageHandlersImpl.h:57
SHandlerHlpBaseFunc(T _function)
Definition: ChannelMessageHandlersImpl.h:23
Definition: ChannelMessageHandlersImpl.h:29
ECmdType
Definition: ProtocolCommands.h:25