DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
RequestHandlerConcept.hpp
Go to the documentation of this file.
1
8#ifndef DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_CONCEPTS_REQUESTHANDLERCONCEPT_HPP_
9#define DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_CONCEPTS_REQUESTHANDLERCONCEPT_HPP_
10
11#include "appfwk/DAQModule.hpp"
17
18#include <map>
19#include <memory>
20#include <string>
21#include <utility>
22
23namespace dunedaq {
24namespace datahandlinglibs {
25
26template<class ReadoutType, class LatencyBufferType>
28{
29
30public:
32
34
37 delete;
40
41 //virtual void init(const CommandData_t& args) = 0;
42 virtual void conf(const appmodel::DataHandlerModule* conf) = 0;
43 virtual void scrap(const appfwk::DAQModule::CommandData_t& args) = 0;
44 virtual void start(const appfwk::DAQModule::CommandData_t& args) = 0;
45 virtual void stop(const appfwk::DAQModule::CommandData_t& args) = 0;
46 virtual void record(const appfwk::DAQModule::CommandData_t& args) = 0;
47
49 virtual void cleanup_check() = 0;
50
52 virtual void periodic_data_transmission() = 0;
53
55 virtual void issue_request(dfmessages::DataRequest /*dr*/, bool /*is_retry*/) = 0;
56
58 virtual std::uint64_t get_oldest_time() = 0; // NOLINT(build/unsigned)
59protected:
60 // Result code of requests
72 std::map<ResultCode, std::string> ResultCodeStrings{
73 { ResultCode::kFound, "FOUND" }, { ResultCode::kNotFound, "NOT_FOUND" },
74 { ResultCode::kTooOld, "TOO_OLD" }, { ResultCode::kNotYet, "NOT_YET_PRESENT" },
75 { ResultCode::kPartiallyOld, "PARTIALLY_PASSED" }, { ResultCode::kCleanup, "CLEANUP" },
76 { ResultCode::kUnknown, "UNKNOWN" }
77 };
78
79 inline const std::string& resultCodeAsString(ResultCode rc) { return ResultCodeStrings[rc]; }
80
81 // Request Result
98
99 virtual void cleanup() = 0;
101
102private:
103};
104
105} // namespace datahandlinglibs
106} // namespace dunedaq
107
108#endif // DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_CONCEPTS_REQUESTHANDLERCONCEPT_HPP_
C++ Representation of a DUNE Fragment, wrapping the flat byte array that is the Fragment's "actual" f...
Definition Fragment.hpp:38
virtual std::uint64_t get_oldest_time()=0
Get oldest timestamp in the buffer.
virtual void periodic_data_transmission()=0
Periodic data transmission - relevant for trigger in particular.
const std::string & resultCodeAsString(ResultCode rc)
RequestHandlerConcept(const RequestHandlerConcept &)=delete
RequestHandlerConcept is not copy-constructible.
virtual RequestResult data_request(dfmessages::DataRequest)=0
virtual void start(const appfwk::DAQModule::CommandData_t &args)=0
RequestHandlerConcept & operator=(RequestHandlerConcept &&)=delete
RequestHandlerConcept is not move-assignable.
virtual void record(const appfwk::DAQModule::CommandData_t &args)=0
virtual void scrap(const appfwk::DAQModule::CommandData_t &args)=0
std::map< ResultCode, std::string > ResultCodeStrings
virtual void cleanup_check()=0
Check if cleanup is necessary and execute it if necessary.
RequestHandlerConcept & operator=(const RequestHandlerConcept &)=delete
RequestHandlerConcept is not copy-assginable.
virtual void conf(const appmodel::DataHandlerModule *conf)=0
virtual void stop(const appfwk::DAQModule::CommandData_t &args)=0
virtual void issue_request(dfmessages::DataRequest, bool)=0
Issue a data request to the request handler.
RequestHandlerConcept(RequestHandlerConcept &&)=delete
RequestHandlerConcept is not move-constructible.
The DUNE-DAQ namespace.
RequestResult(ResultCode rc, dfmessages::DataRequest dr, daqdataformats::Fragment &&frag)
This message represents a request for data sent to a single component of the DAQ.