25 #ifndef INCLUDED_MessageHandler_h_GUID_A7A258A7_A369_46BA_C44F_6FFE56DB464A
26 #define INCLUDED_MessageHandler_h_GUID_A7A258A7_A369_46BA_C44F_6FFE56DB464A
34 #include <boost/optional.hpp>
35 #include <boost/noncopyable.hpp>
54 template <
typename Handler,
typename Registrar>
57 typedef Handler handler_type;
62 void registerHandler(handler_type handler,
void *userdata,
65 m_reg->registerHandler(handler, userdata, msgType);
67 void unregisterHandler(handler_type handler,
void *userdata,
70 m_reg->unregisterHandler(handler, userdata, msgType);
84 template <
typename MessageTraits>
87 typedef typename MessageTraits::handler_type handler_type;
88 typedef typename MessageTraits::registration_type registration_type;
95 : m_handler(handler), m_data(userdata), m_sender(sender),
105 : m_handler(handler), m_data(userdata), m_msgType(msgType) {}
112 if (m_reg.is_initialized()) {
113 m_reg->unregisterHandler(m_handler, m_data, m_sender,
123 m_reg->registerHandler(m_handler, m_data, m_sender, m_msgType);
130 handler_type m_handler;
134 boost::optional<registration_type> m_reg;
137 template <
typename MessageTraits>
138 using MessageHandlerPtr = shared_ptr<MessageHandler<MessageTraits> >;
140 template <
typename MessageTraits>
141 using MessageHandlerList = std::vector<MessageHandlerPtr<MessageTraits> >;
143 typedef std::vector<shared_ptr<MessageHandlerBase> >
144 GenericMessageHandlerList;
147 #endif // INCLUDED_MessageHandler_h_GUID_A7A258A7_A369_46BA_C44F_6FFE56DB464A
RAII class template managing a message handler callback.
Header to bring shared_ptr into the osvr namespace.
MessageHandler(handler_type handler, void *userdata=nullptr, RawSenderType sender=RawSenderType(), RawMessageType msgType=RawMessageType())
Constructor taking your handler's basic info, and optionally a sender, and optionally a message type...
void registerHandler(registration_type reg)
Register handler on the given registration policy value.
~MessageHandler()
destructor: automatically unregisters handler.
MessageHandler(handler_type handler, void *userdata, RawMessageType msgType)
Constructor taking your handler's basic info and a message type.
A class template for the common message traits where the registrar is passed by pointer, has registerHandler and unregisterHandler methods, and doesn't take a RawSenderType because it's implied.
Type-safe wrapper with built-in default for a VRPN "message type" integer.
Type-safe wrapper with built-in default for a VRPN "sender type" integer.
void unregisterHandler()
Method if you want to manually unregister your handler.