Loading...
Searching...
No Matches
Messenger.h
Go to the documentation of this file.
1#ifndef MALENA_MESSENGER_NEW_H
2#define MALENA_MESSENGER_NEW_H
3
5#include <functional>
6#include "Base/Trait.h"
7
8namespace ml
9{
63 class Messenger : public Trait
64 {
65 public:
80 template<typename DataType, typename Enum>
81 void sendMessage(Enum event, const DataType& data);
82
96 template<typename DataType, typename Enum>
97 void onMessage(Enum event, std::function<void(const DataType&)> callback);
98
110 template<typename DataType, typename Enum>
111 void offMessage(Enum event);
112
120
121 virtual ~Messenger();
122 Messenger() = default;
123 };
124
125} // namespace ml
126
127#include "../../../src/Traits/Messenger.tpp"
128#endif // MALENA_MESSENGER_NEW_H
virtual ~Messenger()
void offAllMessages()
Unsubscribe from all messages registered by this object.
void offMessage(Enum event)
Unsubscribe from a specific typed message.
void sendMessage(Enum event, const DataType &data)
Publish a typed message to all current subscribers.
void onMessage(Enum event, std::function< void(const DataType &)> callback)
Register a callback to receive a typed message.
Messenger()=default
Empty marker base class for all Malena traits.
Definition Trait.h:31
Definition Component.h:18