Go to the documentation of this file.
14 #ifndef RAD_MAL_REQUEST_HPP
15 #define RAD_MAL_REQUEST_HPP
17 #include <rad/assert.hpp>
18 #include <rad/logger.hpp>
20 #include <mal/rr/ServerContextProvider.hpp>
21 #include <mal/utility/future.hpp>
35 template <
typename REP_TYPE,
typename REQ_TYPE =
void>
45 explicit Request(
const REQ_TYPE& req_payload)
46 : m_req_payload(req_payload),
47 m_rep_promise(
std::make_shared<
elt::mal::promise<REP_TYPE>>()) {
81 return m_rep_promise->get_future();
93 m_rep_promise->set_value(reply);
106 m_rep_promise->set_exception(boost::copy_exception(e));
110 REQ_TYPE m_req_payload;
115 std::shared_ptr<elt::mal::promise<REP_TYPE>>
125 template <
class REP_TYPE>
132 Request() : m_rep_promise(
std::make_shared<
elt::mal::promise<REP_TYPE>>()) {
155 return m_rep_promise->get_future();
167 m_rep_promise->set_value(reply);
181 m_rep_promise->set_exception(boost::copy_exception(e));
189 std::shared_ptr<elt::mal::promise<REP_TYPE>>
200 template <
typename REP_TYPE,
typename REQ_TYPE =
void>
212 m_server_ami = elt::mal::rr::ServerContextProvider::getInstance<
213 elt::mal::rr::ServerContext<REP_TYPE>>()
229 return m_req_payload;
241 return m_server_ami->complete(reply);
253 return m_server_ami->completed(reply);
267 REQ_TYPE m_req_payload;
268 std::shared_ptr<::elt::mal::rr::Ami<REP_TYPE>>
278 template <
class REP_TYPE>
287 m_server_ami = elt::mal::rr::ServerContextProvider::getInstance<
288 elt::mal::rr::ServerContext<REP_TYPE>>()
311 return m_server_ami->complete(reply);
323 return m_server_ami->completed(reply);
337 std::shared_ptr<::elt::mal::rr::ServerAmi<REP_TYPE>>
344 #endif // RAD_MAL_REQUEST_HPP
std::shared_ptr<::elt::mal::rr::Ami< REP_TYPE > > GetAmiServer()
Definition: request.hpp:331
RequestAmi()
Definition: request.hpp:285
bool SetPartialReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:309
bool SetFinalReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:251
Definition: request.hpp:201
#define RAD_ASSERTPTR(a)
Definition: assert.hpp:19
Request(const REQ_TYPE &req_payload)
Definition: request.hpp:45
void SetReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:90
const REQ_TYPE & GetRequestPayload() const
Definition: request.hpp:227
RequestAmi & operator=(const RequestAmi &r)=default
const REQ_TYPE & GetRequestPayload() const
Definition: request.hpp:67
RequestAmi(const RequestAmi &r)=default
Request & operator=(const Request &r)=default
RequestAmi & operator=(const RequestAmi &r)=default
Definition: actionCallback.hpp:21
log4cplus::Logger & GetLogger()
Definition: logger.cpp:44
void SetReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:164
void SetException(const T &e) const
Definition: request.hpp:103
Request(const Request &r)=default
Definition: Exmalif.hpp:418
elt::mal::future< REP_TYPE > GetReplyFuture() const
Definition: request.hpp:78
Request()
Definition: request.hpp:132
Request(const Request &r)=default
Definition: errors.hpp:58
bool SetPartialReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:239
RequestAmi(const RequestAmi &r)=default
#define RAD_TRACE(logger)
Definition: logger.hpp:24
RequestAmi(const REQ_TYPE &req_payload)
Definition: request.hpp:210
elt::mal::future< REP_TYPE > GetReplyFuture() const
Definition: request.hpp:152
Definition: request.hpp:36
void SetException(const T &e) const
Definition: request.hpp:178
Request & operator=(const Request &r)=default
bool SetFinalReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:321
std::shared_ptr<::elt::mal::rr::Ami< REP_TYPE > > GetAmiServer()
Definition: request.hpp:261