13#ifndef HLCC_TELIF_TELIF_METADAQCMDSIMPL_HPP
14#define HLCC_TELIF_TELIF_METADAQCMDSIMPL_HPP
16#include "Metadaqif.hpp"
17#include <rad/exceptions.hpp>
18#include <rad/smAdapter.hpp>
20#include "telif/metadaqCmds.rad.hpp"
36 virtual elt::mal::future<std::shared_ptr<::metadaqif::DaqReply>>
StartDaq(
const std::string&
id)
override {
38 LOG4CPLUS_INFO(
GetLogger(),
"Received StartDaq with: Id " <<
id);
40 auto ev = std::make_shared<MetadaqCmds::StartDaq>(
id);
42 m_sm.RegisterRejectHandler(MetadaqCmds::StartDaq::ID, [](
const rad::AnyEvent& event, std::string
const& state) {
44 auto req = rad::GetPayloadNothrow<MetadaqCmds::StartDaq>(event);
46 LOG4CPLUS_ERROR(
GetLogger(), event.GetId() <<
" has no associated request!");
50 const std::string received_id = req->GetRequestPayload();
51 metadaqif::DaqException rply_exception(received_id,
"Request rejected in state " + state);
52 req->SetException(rply_exception);
57 return ev->GetPayload().GetReplyFuture();
60 virtual elt::mal::future<std::shared_ptr<::metadaqif::DaqStopReply>>
StopDaq(
const std::string&
id)
override {
62 LOG4CPLUS_INFO(
GetLogger(),
"Received StopDaq with: Id " <<
id);
64 auto ev = std::make_shared<MetadaqCmds::StopDaq>(
id);
66 m_sm.RegisterRejectHandler(MetadaqCmds::StopDaq::ID, [](
const rad::AnyEvent& event, std::string
const& state) {
68 auto req = rad::GetPayloadNothrow<MetadaqCmds::StopDaq>(event);
70 LOG4CPLUS_ERROR(
GetLogger(), event.GetId() <<
" has no associated request!");
74 const std::string received_id = req->GetRequestPayload();
75 metadaqif::DaqException rply_exception(received_id,
"Request rejected in state " + state);
76 req->SetException(rply_exception);
81 return ev->GetPayload().GetReplyFuture();
84 virtual elt::mal::future<std::shared_ptr<::metadaqif::DaqReply>>
AbortDaq(
const std::string&
id)
override {
86 LOG4CPLUS_INFO(
GetLogger(),
"Received AbortDaq with: Id " <<
id);
88 auto ev = std::make_shared<MetadaqCmds::AbortDaq>(
id);
90 m_sm.RegisterRejectHandler(MetadaqCmds::AbortDaq::ID, [](
const rad::AnyEvent& event, std::string
const& state) {
92 auto req = rad::GetPayloadNothrow<MetadaqCmds::AbortDaq>(event);
94 LOG4CPLUS_ERROR(
GetLogger(), event.GetId() <<
" has no associated request!");
98 const std::string received_id = req->GetRequestPayload();
99 metadaqif::DaqException rply_exception(received_id,
"Request rejected in state " + state);
100 req->SetException(rply_exception);
105 return ev->GetPayload().GetReplyFuture();
108 virtual elt::mal::future<std::shared_ptr<::metadaqif::DaqStatus>>
GetDaqStatus(
const std::string&
id)
override {
110 LOG4CPLUS_INFO(
GetLogger(),
"Received GetDaqStatus with: Id " <<
id);
112 auto ev = std::make_shared<MetadaqCmds::GetDaqStatus>(
id);
114 m_sm.RegisterRejectHandler(MetadaqCmds::GetDaqStatus::ID, [](
const rad::AnyEvent& event, std::string
const& state) {
116 auto req = rad::GetPayloadNothrow<MetadaqCmds::GetDaqStatus>(event);
117 if (req ==
nullptr) {
118 LOG4CPLUS_ERROR(
GetLogger(), event.GetId() <<
" has no associated request!");
122 const std::string received_id = req->GetRequestPayload();
123 metadaqif::DaqException rply_exception(received_id,
"Request rejected in state " + state);
124 req->SetException(rply_exception);
129 return ev->GetPayload().GetReplyFuture();
133 rad::SMAdapter& m_sm;
Definition configTest.cpp:22
log4cplus::Logger & GetLogger()
Definition logger.cpp:21