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
log4cplus::Logger & GetLogger()
Definition: logger.cpp:43
bool SetPartialReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:239
bool SetFinalReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:321
Definition: request.hpp:201
void SetException(const T &e) const
Definition: request.hpp:178
Request(const REQ_TYPE &req_payload)
Definition: request.hpp:45
RequestAmi()
Definition: request.hpp:285
#define RAD_ASSERTPTR(a)
Definition: assert.hpp:19
Request & operator=(const Request &r)=default
RequestAmi(const REQ_TYPE &req_payload)
Definition: request.hpp:210
bool SetPartialReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:309
elt::mal::future< REP_TYPE > GetReplyFuture() const
Definition: request.hpp:152
const REQ_TYPE & GetRequestPayload() const
Definition: request.hpp:227
RequestAmi & operator=(const RequestAmi &r)=default
void SetReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:164
bool SetFinalReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:251
#define RAD_TRACE(logger)
Definition: logger.hpp:19
std::shared_ptr<::elt::mal::rr::Ami< REP_TYPE > > GetAmiServer()
Definition: request.hpp:261
void SetException(const T &e) const
Definition: request.hpp:103
elt::mal::future< REP_TYPE > GetReplyFuture() const
Definition: request.hpp:78
Request()
Definition: request.hpp:132
const REQ_TYPE & GetRequestPayload() const
Definition: request.hpp:67
void SetReplyValue(const REP_TYPE &reply) const
Definition: request.hpp:90
std::shared_ptr<::elt::mal::rr::Ami< REP_TYPE > > GetAmiServer()
Definition: request.hpp:331
Definition: request.hpp:36