1 #ifndef ERIS_RESPONSE_H
2 #define ERIS_RESPONSE_H
6 #include <Atlas/Objects/ObjectsFwd.h>
7 #include <unordered_map>
15 std::string getErrorMessage(
const Atlas::Objects::Operation::RootOperation & err);
26 virtual Router::RouterResult
responseReceived(
const Atlas::Objects::Operation::RootOperation& op) = 0;
32 Router::RouterResult
responseReceived(
const Atlas::Objects::Operation::RootOperation&)
override;
35 void* clearMemberResponse(
void*);
41 typedef void (T::*T_method)(
const Atlas::Objects::Operation::RootOperation& op);
43 MemberResponse(T *obj,
void (T::*method)(
const Atlas::Objects::Operation::RootOperation& op)) :
47 obj->add_destroy_notify_callback(&m_object, &clearMemberResponse);
51 if (m_object) m_object->remove_destroy_notify_callback(&m_object);
54 Router::RouterResult
responseReceived(
const Atlas::Objects::Operation::RootOperation& op)
override {
55 if (m_object) (m_object->*m_func)(op);
56 return Router::HANDLED;
68 typedef std::function<Router::RouterResult(
const Atlas::Objects::Operation::RootOperation& op)> Callback;
72 void await(std::int64_t serialno, std::unique_ptr<ResponseBase>);
74 void await(std::int64_t serial, Callback callback);
77 void await(std::int64_t serial, T* ins,
void (T::*method)(
const Atlas::Objects::Operation::RootOperation& op) )
82 void ignore(std::int64_t serial)
84 await(serial, std::make_unique<NullResponse>());
87 Router::RouterResult handleOp(
const Atlas::Objects::Operation::RootOperation& op);
90 std::unordered_map<std::int64_t, Callback> m_pending;
95 #endif // of ERIS_RESPONSE_H