Loading...
Searching...
No Matches
Messenger.h
Go to the documentation of this file.
1// Copyright (c) 2025 Dave R. Smith. All rights reserved.
2// Malena Framework — Proprietary Software. See LICENSE for terms.
3
4#ifndef MALENA_MESSENGER_NEW_H
5#define MALENA_MESSENGER_NEW_H
6
9#include <functional>
11
12namespace ml
13{
67 class MALENA_API Messenger : public Trait
68 {
69 public:
84 template<typename DataType, typename Enum>
85 void sendMessage(Enum event, const DataType& data);
86
100 template<typename DataType, typename Enum>
101 void onMessage(Enum event, std::function<void(const DataType&)> callback);
102
114 template<typename DataType, typename Enum>
115 void offMessage(Enum event);
116
124
125 virtual ~Messenger();
126 Messenger() = default;
127 };
128
129} // namespace ml
130
131#include "../../../../src/Traits/Communication/Messenger.tpp"
132#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:35
#define MALENA_API
Definition Component.h:22