9 #ifndef RAD_MSG_HANDLER_HPP
10 #define RAD_MSG_HANDLER_HPP
12 #include <rad/exceptions.hpp>
16 #include <unordered_map>
36 virtual void Handle(
const std::string& identity,
const std::string& msg_type_id,
37 const void* data,
size_t data_size) = 0;
48 template <
typename EventType>
50 const void* msg,
size_t msg_size) {
53 if (strcmp(request_name.c_str(), EventType::id) != 0) {
55 "> payload type, does not match eventId <" + EventType::id +
">.");
61 using msg_payload_t =
typename EventType::payload_t::payload_t;
62 msg_payload_t req_payload;
64 if (req_payload.ParseFromArray(msg, msg_size) ==
false) {
65 throw rad::Exception(
"Error parsing <" + request_name +
"> payload.");
68 return EventType(identity.c_str(), req_payload);
virtual void Handle(const std::string &identity, const std::string &msg_type_id, const void *data, size_t data_size)=0
EventType ParseRequestAndCreateEvent(const std::string &identity, const std::string &request_name, const void *msg, size_t msg_size)
Definition: msgHandler.hpp:49
Definition: exceptions.hpp:45
virtual ~MsgHandler()
Definition: msgHandler.hpp:25