9#ifndef RAD_MSG_REPLIER_HPP
10#define RAD_MSG_REPLIER_HPP
16#include <azmq/message.hpp>
17#include <azmq/socket.hpp>
19#include <boost/asio.hpp>
31 std::function<void(
const std::string&,
const std::string&,
const void*,
size_t)>;
34 MsgReplier(
const std::string& endpoint, boost::asio::io_context& ios,
35 std::unique_ptr<MsgHandler>&& fallback_handler);
44 size_t Send(
const std::string& identity,
const std::string& reply_type,
45 const std::string& reply_payload);
47 template <
typename REPLY>
48 size_t Send(
const std::string& identity,
const REPLY& reply_payload);
54 std::string m_endpoint;
55 boost::asio::io_context& m_ios;
56 azmq::router_socket m_socket;
57 std::unique_ptr<MsgHandler> m_fallback_handler;
61 void Callback(boost::system::error_code
const& error_code, azmq::message& msg,
size_t nbytes);
64template <
typename TYPEREP>
69 std::string reply_type = reply_payload.GetDescriptor()->full_name();
72 if (reply_payload.SerializeToString(&str) ==
false) {
74 "Failed serializing to string payload type <" << reply_type <<
">");
78 return Send(identity, reply_type, str);
#define RAD_ASSERTPTR(a)
Definition assert.hpp:19
Definition msgReplier.hpp:28
MsgReplier & operator=(const MsgReplier &)=delete
virtual ~MsgReplier()
Definition msgReplier.cpp:45
std::function< void(const std::string &, const std::string &, const void *, size_t)> MsgHandler_t
Definition msgReplier.hpp:30
size_t Send(const std::string &identity, const std::string &reply_type, const std::string &reply_payload)
Definition msgReplier.cpp:58
MsgReplier(const MsgReplier &)=delete
size_t Send(const std::string &identity, const REPLY &reply_payload)
MsgReplier(MsgReplier &&)=default
std::unordered_map< std::string, MsgHandler_t > MsgHandlerMap_t
Definition msgReplier.hpp:32
void Stop()
Definition msgReplier.cpp:83
MsgReplier(const std::string &endpoint, boost::asio::io_context &ios, std::unique_ptr< MsgHandler > &&fallback_handler)
Definition msgReplier.cpp:27
void Start()
Definition msgReplier.cpp:75
void AddMsgHandler(const std::string &request_name, MsgHandler_t handler)
Definition msgReplier.cpp:99
#define RAD_TRACE(logger)
Definition logger.hpp:21
Definition actionsApp.cpp:23
log4cplus::Logger & GetLogger()
Definition logger.cpp:72