RTC Toolkit  0.1.0-alpha
request.hpp
Go to the documentation of this file.
1 
9 #ifndef RTCTK_DATATASK_REQUEST_HPP
10 #define RTCTK_DATATASK_REQUEST_HPP
11 
12 #include <future>
13 
14 namespace rtctk::dataTask {
19 //TODO: reply code by std::error_code
20 template <typename REQ_TYPE>
21 class Request {
22  public:
23  explicit Request(const REQ_TYPE& req_payload)
24  : m_req_payload(req_payload),
25  m_rep_promise(std::make_shared<std::promise<void>>()) {
26  }
27 
28  Request(const Request& r) = default;
29 
30  Request& operator=(const Request& r) = default;
31 
32  const REQ_TYPE& GetPayload() const {
33  return m_req_payload;
34  }
35 
36  std::future<void> GetReplyFuture() const {
37  return m_rep_promise->get_future();
38  }
39 
40  void SetReply() const {
41  m_rep_promise->set_value();
42  }
43 
44  //template <class T>
45  //void SetException(const T& e) const {
46  // m_rep_promise->set_exception(boost::copy_exception(e));
47  //}
48 
49  private:
50  REQ_TYPE m_req_payload; // Payload associated to the request.
51  std::shared_ptr<std::promise<void>> m_rep_promise; // Pointer to the promise associated to the reply.
52 };
53 
54 } // namespace
55 
56 #endif
rtctk::dataTask::Request::GetPayload
const REQ_TYPE & GetPayload() const
Definition: request.hpp:32
rtctk::dataTask::Request::SetReply
void SetReply() const
Definition: request.hpp:40
rtctk::dataTask::Request::GetReplyFuture
std::future< void > GetReplyFuture() const
Definition: request.hpp:36
rtctk::dataTask::Request::Request
Request(const Request &r)=default
rtctk::dataTask
Definition: messageQueue.hpp:17
rtctk::dataTask::Request
Definition: request.hpp:21
rtctk::dataTask::Request::operator=
Request & operator=(const Request &r)=default
rtctk::dataTask::Request::Request
Request(const REQ_TYPE &req_payload)
Definition: request.hpp:23
std
Definition: mudpiProcessingError.hpp:109