rad
3.0.0
INTROOT
include
rad
topicHandler.hpp
Go to the documentation of this file.
1
9
#ifndef RAD_TOPIC_HANDLER_HPP
10
#define RAD_TOPIC_HANDLER_HPP
11
12
#include <rad/exceptions.hpp>
13
14
#include <memory>
15
#include <string>
16
#include <unordered_map>
17
18
namespace
rad
{
19
23
class
TopicHandler
{
24
public
:
25
virtual
~TopicHandler
() {}
33
virtual
void
Handle
(
const
std::string& topic_type_id,
const
void
* data,
size_t
data_size) = 0;
34
};
35
43
template
<
typename
EventType>
44
EventType
ParseTopicAndCreateEvent
(
const
std::string& topic_name,
const
void
* msg,
45
size_t
msg_size) {
46
typename
EventType::payload_t topic_payload;
47
if
(topic_payload.ParseFromArray(msg, msg_size) ==
false
) {
48
throw
rad::Exception
(
"Error parsing <"
+ topic_name +
"> payload."
);
49
}
50
return
EventType(topic_payload);
51
}
52
53
}
// namespace rad
54
55
#endif
/* #ifndef RAD_TOPIC_HANDLER_HPP */
rad::TopicHandler::~TopicHandler
virtual ~TopicHandler()
Definition:
topicHandler.hpp:25
rad::TopicHandler::Handle
virtual void Handle(const std::string &topic_type_id, const void *data, size_t data_size)=0
rad::Exception
Definition:
exceptions.hpp:45
rad
Definition:
actionCallback.hpp:21
rad::ParseTopicAndCreateEvent
EventType ParseTopicAndCreateEvent(const std::string &topic_name, const void *msg, size_t msg_size)
Definition:
topicHandler.hpp:44
rad::TopicHandler
Definition:
topicHandler.hpp:23
Generated by
1.8.20