rad 6.2.0
Loading...
Searching...
No Matches
msgRequestorRaw.hpp
Go to the documentation of this file.
1
9#ifndef RAD_MSG_REQUESTOR_RAW_HPP
10#define RAD_MSG_REQUESTOR_RAW_HPP
11
12#include <chrono>
13
14#include <azmq/message.hpp>
15#include <azmq/socket.hpp>
16
17#include <boost/asio.hpp>
18
19#include <google/protobuf/message.h>
20
21#include <rad/assert.hpp>
22#include <rad/exceptions.hpp>
23#include <rad/logger.hpp>
24
25namespace rad {
26
31 public:
33 const std::string& endpoint, const std::string& identity, boost::asio::io_context& ios,
34 std::function<void(const std::error_code& err_code, const std::string& msg_type_id,
35 const void* data, const size_t data_size)>
36 reply_handler);
37 virtual ~MsgRequestorRaw();
38
39 size_t Send(const std::string& payload_type, const std::string& payload,
40 const long timeout = 0);
41
44
45 private:
46 void ReplyCallback(const boost::system::error_code& err_code, azmq::message& msg,
47 size_t nbytes);
48 void TimeoutCallback(const boost::system::error_code& err_code);
49 bool InstallTimer(const long timeout /*msec*/);
50 void CancelTimer();
51
52 std::string m_endpoint;
53 std::string m_identity;
54 boost::asio::io_context& m_ios;
55 azmq::dealer_socket m_socket;
56 boost::asio::deadline_timer* m_deadline_timer;
57
58 std::function<void(const std::error_code& err_code, std::string const& msg_type_id,
59 const void* data, const size_t data_size)>
60 m_reply_handler;
61};
62
72 using handler_t =
73 std::function<void(const std::error_code& /*err_code*/, std::string const& /*msg_type_id*/,
74 const void* /*data*/, const size_t /*data_size*/)>;
80 MsgRequestorRaw2(const std::string& endpoint, const std::string& identity,
81 boost::asio::io_context& io_ctx);
86
93 size_t AsyncSendReceive(std::string const& payload_type, std::string const& payload,
94 handler_t handler,
95 std::chrono::milliseconds const timeout = std::chrono::milliseconds(0));
108 size_t AsyncSend(std::string const& payload_type, std::string const& payload);
120 void AsyncReceive(handler_t handler,
121 std::chrono::milliseconds const timeout = std::chrono::milliseconds(0));
125 void Cancel() noexcept;
126
128 MsgRequestorRaw2& operator=(const MsgRequestorRaw2&) = delete;
130 MsgRequestorRaw2& operator=(MsgRequestorRaw2&&) = default;
131
132 private:
133 std::string m_endpoint;
134 std::string m_identity;
135 boost::asio::io_context& m_io_ctx;
136 azmq::dealer_socket m_socket;
137 handler_t m_handler;
138};
139
140} // namespace rad
141
142#endif
Assert header file.
Definition msgRequestorRaw.hpp:30
virtual ~MsgRequestorRaw()
Definition msgRequestorRaw.cpp:53
MsgRequestorRaw(const std::string &endpoint, const std::string &identity, boost::asio::io_context &ios, std::function< void(const std::error_code &err_code, const std::string &msg_type_id, const void *data, const size_t data_size)> reply_handler)
Definition msgRequestorRaw.cpp:30
size_t Send(const std::string &payload_type, const std::string &payload, const long timeout=0)
Definition msgRequestorRaw.cpp:67
MsgRequestorRaw & operator=(const MsgRequestorRaw &)=delete
MsgRequestorRaw(const MsgRequestorRaw &)=delete
Logger class.
Exception classes header file.
Definition actionsApp.cpp:23
Definition errors.hpp:58
Definition msgRequestorRaw.hpp:71
size_t AsyncSendReceive(std::string const &payload_type, std::string const &payload, handler_t handler, std::chrono::milliseconds const timeout=std::chrono::milliseconds(0))
Definition msgRequestorRaw.cpp:287
size_t AsyncSend(std::string const &payload_type, std::string const &payload)
Definition msgRequestorRaw.cpp:296
~MsgRequestorRaw2()
Definition msgRequestorRaw.cpp:263
MsgRequestorRaw2(const std::string &endpoint, const std::string &identity, boost::asio::io_context &io_ctx)
Definition msgRequestorRaw.cpp:240
std::function< void(const std::error_code &, std::string const &, const void *, const size_t)> handler_t
Definition msgRequestorRaw.hpp:72
void AsyncReceive(handler_t handler, std::chrono::milliseconds const timeout=std::chrono::milliseconds(0))
Definition msgRequestorRaw.cpp:314
void Cancel() noexcept
Definition msgRequestorRaw.cpp:276