9 #ifndef RAD_MSG_REPLIER_HPP
10 #define RAD_MSG_REPLIER_HPP
12 #include <rad/assert.hpp>
13 #include <rad/logger.hpp>
14 #include <rad/msgHandler.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_service& 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_service& 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);
64 template <
typename TYPEREP>
65 size_t MsgReplier::Send(
const std::string& identity,
const TYPEREP& reply_payload) {
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);
log4cplus::Logger & GetLogger()
Definition: logger.cpp:43
void Start()
Definition: msgReplier.cpp:74
MsgReplier(const std::string &endpoint, boost::asio::io_service &ios, std::unique_ptr< MsgHandler > &&fallback_handler)
Definition: msgReplier.cpp:26
Definition: msgReplier.hpp:28
size_t Send(const std::string &identity, const std::string &reply_type, const std::string &reply_payload)
Definition: msgReplier.cpp:57
#define RAD_ASSERTPTR(a)
Definition: assert.hpp:19
std::unordered_map< std::string, MsgHandler_t > MsgHandlerMap_t
Definition: msgReplier.hpp:32
void Stop()
Definition: msgReplier.cpp:82
MsgReplier & operator=(const MsgReplier &)=delete
virtual ~MsgReplier()
Definition: msgReplier.cpp:44
def handler
Definition: test_dispatcher.py:11
#define RAD_TRACE(logger)
Definition: logger.hpp:19
std::function< void(const std::string &, const std::string &, const void *, size_t)> MsgHandler_t
Definition: msgReplier.hpp:31
void AddMsgHandler(const std::string &request_name, MsgHandler_t handler)
Definition: msgReplier.cpp:98