VR-Engage  2.2
Loading...
Searching...
No Matches
rfxMessageHandler.h
Go to the documentation of this file.
1/*********************************************************************************
2** Copyright (c) 2025 MAK Technologies
3** All rights reserved.
4*********************************************************************************/
5
6//! \file rfxMessageHandler.h
7//! \brief Defines a handler for RadarFX message callbacks
8//! \ingroup vreRadarFxShared
9//!
10//! This file contains the message handler class that manages callback delegates
11//! for different types of RadarFX messages
12
13#pragma once
14
17
18#include <map>
19
20namespace makRadarFx
21{
22
23//! \brief Forward declaration of the base message class
24class DtBaseMessage;
25
26//! \brief Delegate type for message callbacks
27//!
28//! This typedef defines a delegate that takes a DtBaseMessage pointer as a parameter
29//! and returns void. It is used for registering callback functions that will be
30//! invoked when messages of specific types are received.
32
33//! \brief Manages message callbacks for different message types
34//!
35//! This class maintains a registry of callback delegates for various message types.
36//! When a message is received, it can be passed to this handler, which will invoke
37//! all registered callbacks for that message type. Multiple callbacks can be
38//! registered for the same message type, allowing different components to respond
39//! to the same messages.
41{
42public:
43 //! \brief Default constructor
44 //!
45 //! Creates a new message handler with an empty callback registry
47
48 //! \brief Virtual destructor
49 //!
50 //! Cleans up the message handler resources
52
53 //! \brief Registers a callback for a specific message type
54 //! \param messageType The type of message to register for
55 //! \param delegate The callback delegate to invoke when a message of this type is received
56 //!
57 //! Adds a callback delegate to be invoked when a message of the specified type
58 //! is processed. Multiple callbacks can be registered for the same message type.
59 //! Note that this class does not take ownership of the delegate's memory.
60 virtual void addMessageCallback(unsigned int messageType, DtVreMessageDelegate& delegate);
61
62 //! \brief Unregisters a specific callback for a message type
63 //! \param messageType The type of message to unregister from
64 //! \param delegate The callback delegate to remove
65 //!
66 //! Removes a previously registered callback delegate for the specified message type.
67 //! This method does not free the memory associated with the delegate object.
68 virtual void removeMessageCallback(unsigned int messageType, DtVreMessageDelegate& delegate);
69
70 //! \brief Unregisters all callbacks for a specific message type
71 //! \param messageType The type of message to clear all callbacks for
72 //!
73 //! Removes all registered callback delegates for the specified message type.
74 //! This method does not free the memory associated with the delegate objects.
75 virtual void clearMessageCallbacks(unsigned int messageType);
76
77 //! \brief Processes a message by invoking all registered callbacks
78 //! \param msg Pointer to the message to process
79 //!
80 //! Invokes all callback delegates that have been registered for the type
81 //! of the provided message. The message is passed to each callback.
82 virtual void processMessage(DtBaseMessage* msg);
83
84protected:
85 //! \brief Type definition for the multimap of message types to callback delegates
86 typedef std::multimap<unsigned int, DtVreMessageDelegate> MessageMap;
87
88 //! \brief Type definition for a message type and callback delegate pair
89 typedef std::pair<unsigned int, DtVreMessageDelegate> MessagePair;
90
91 //! \brief Map of message types to their associated callback delegates
92 //!
93 //! This multimap allows multiple callbacks to be registered for each message type
95};
96
97} // namespace makRadarFx
Base class for all RadarFX messages.
Definition rfxMessage.h:35
Forward declaration of the delegate template class.
Definition delegate.h:186
virtual void processMessage(DtBaseMessage *msg)
Processes a message by invoking all registered callbacks.
virtual void removeMessageCallback(unsigned int messageType, DtVreMessageDelegate &delegate)
Unregisters a specific callback for a message type.
virtual ~DtVreMessageHandler()
Virtual destructor.
virtual void clearMessageCallbacks(unsigned int messageType)
Unregisters all callbacks for a specific message type.
std::pair< unsigned int, DtVreMessageDelegate > MessagePair
Type definition for a message type and callback delegate pair.
Definition rfxMessageHandler.h:89
MessageMap myMessageHandlers
Map of message types to their associated callback delegates.
Definition rfxMessageHandler.h:94
DtVreMessageHandler()
Default constructor.
virtual void addMessageCallback(unsigned int messageType, DtVreMessageDelegate &delegate)
Registers a callback for a specific message type.
std::multimap< unsigned int, DtVreMessageDelegate > MessageMap
Type definition for the multimap of message types to callback delegates.
Definition rfxMessageHandler.h:86
Defines export macros for the RadarFx Shared library.
#define RFX_DLL_SHARED
Export/import macro for non-Windows platforms (empty)
Definition export.h:25
Definition radarFxConnectorDriver.h:21
DtDelegate< void, DtBaseMessage * > DtVreMessageDelegate
Delegate type for message callbacks.
Definition rfxMessageHandler.h:31
Defines a lightweight single-parameter delegate system for callback functions.