9#ifndef HLCC_TELIF_TELIFSIM_METADAQCMDSIMPL_HPP
10#define HLCC_TELIF_TELIFSIM_METADAQCMDSIMPL_HPP
12#include "Metadaqif.hpp"
13#include <rad/exceptions.hpp>
14#include <rad/smAdapter.hpp>
16#include "telifsim/metadaqCmds.rad.hpp"
32 virtual elt::mal::future<std::shared_ptr<::metadaqif::DaqReply>>
StartDaq(
const std::string&
id)
override {
35 auto ev = std::make_shared<MetadaqCmds::StartDaq>(
id);
37 m_sm.RegisterRejectHandler(MetadaqCmds::StartDaq::ID, [](
const rad::AnyEvent& event, std::string
const& state) {
39 auto req = rad::GetPayloadNothrow<MetadaqCmds::StartDaq>(event);
41 LOG4CPLUS_ERROR(
GetLogger(), event.GetId() <<
" has no associated request!");
45 const std::string received_id = req->GetRequestPayload();
46 metadaqif::DaqException rply_exception(received_id,
"Request rejected in state " + state);
47 req->SetException(rply_exception);
52 return ev->GetPayload().GetReplyFuture();
55 virtual elt::mal::future<std::shared_ptr<::metadaqif::DaqStopReply>>
StopDaq(
const std::string&
id)
override {
58 auto ev = std::make_shared<MetadaqCmds::StopDaq>(
id);
60 m_sm.RegisterRejectHandler(MetadaqCmds::StopDaq::ID, [](
const rad::AnyEvent& event, std::string
const& state) {
62 auto req = rad::GetPayloadNothrow<MetadaqCmds::StopDaq>(event);
64 LOG4CPLUS_ERROR(
GetLogger(), event.GetId() <<
" has no associated request!");
68 const std::string received_id = req->GetRequestPayload();
69 metadaqif::DaqException rply_exception(received_id,
"Request rejected in state " + state);
70 req->SetException(rply_exception);
75 return ev->GetPayload().GetReplyFuture();
78 virtual elt::mal::future<std::shared_ptr<::metadaqif::DaqReply>>
AbortDaq(
const std::string&
id)
override {
81 auto ev = std::make_shared<MetadaqCmds::AbortDaq>(
id);
83 m_sm.RegisterRejectHandler(MetadaqCmds::AbortDaq::ID, [](
const rad::AnyEvent& event, std::string
const& state) {
85 auto req = rad::GetPayloadNothrow<MetadaqCmds::AbortDaq>(event);
87 LOG4CPLUS_ERROR(
GetLogger(), event.GetId() <<
" has no associated request!");
91 const std::string received_id = req->GetRequestPayload();
92 metadaqif::DaqException rply_exception(received_id,
"Request rejected in state " + state);
93 req->SetException(rply_exception);
98 return ev->GetPayload().GetReplyFuture();
101 virtual elt::mal::future<std::shared_ptr<::metadaqif::DaqStatus>>
GetDaqStatus(
const std::string&
id)
override {
104 auto ev = std::make_shared<MetadaqCmds::GetDaqStatus>(
id);
106 m_sm.RegisterRejectHandler(MetadaqCmds::GetDaqStatus::ID, [](
const rad::AnyEvent& event, std::string
const& state) {
108 auto req = rad::GetPayloadNothrow<MetadaqCmds::GetDaqStatus>(event);
109 if (req ==
nullptr) {
110 LOG4CPLUS_ERROR(
GetLogger(), event.GetId() <<
" has no associated request!");
114 const std::string received_id = req->GetRequestPayload();
115 metadaqif::DaqException rply_exception(received_id,
"Request rejected in state " + state);
116 req->SetException(rply_exception);
121 return ev->GetPayload().GetReplyFuture();
125 rad::SMAdapter& m_sm;
Definition: actionMgr.cpp:31
log4cplus::Logger & GetLogger()
Definition: logger.cpp:17