Line data Source code
1 :
2 : /**
3 : * @file SourceConcept.hpp SourceConcept for constructors and
4 : * forwarding command args. Enforces the implementation to
5 : * queue in UDP JUMBO frames to be translated to TypeAdapters and
6 : * send them to corresponding sinks.
7 : *
8 : * This is part of the DUNE DAQ , copyright 2020.
9 : * Licensing/copyright details are in the COPYING file that you should have
10 : * received with this code.
11 : */
12 : #ifndef ASIOLIBS_SRC_SOURCECONCEPT_HPP_
13 : #define ASIOLIBS_SRC_SOURCECONCEPT_HPP_
14 :
15 : //#include "DefaultParserImpl.hpp"
16 :
17 : #include "opmonlib/MonitorableObject.hpp"
18 : #include "appfwk/DAQModule.hpp"
19 : #include "appmodel/DataMoveCallbackConf.hpp"
20 : //#include "packetformat/detail/block_parser.hpp"
21 : #include <nlohmann/json.hpp>
22 :
23 : #include <memory>
24 : #include <sstream>
25 : #include <string>
26 :
27 : namespace dunedaq::asiolibs {
28 :
29 : class SourceConcept : public opmonlib::MonitorableObject
30 : {
31 : public:
32 0 : SourceConcept() {}
33 0 : virtual ~SourceConcept() {}
34 :
35 : SourceConcept(const SourceConcept&) = delete; ///< SourceConcept is not copy-constructible
36 : SourceConcept& operator=(const SourceConcept&) = delete; ///< SourceConcept is not copy-assginable
37 : SourceConcept(SourceConcept&&) = delete; ///< SourceConcept is not move-constructible
38 : SourceConcept& operator=(SourceConcept&&) = delete; ///< SourceConcept is not move-assignable
39 :
40 : // virtual void init(const nlohmann::json& args) = 0;
41 : virtual void acquire_callback() = 0;
42 : // virtual void conf(const nlohmann::json& args) = 0;
43 : // virtual void start(const nlohmann::json& args) = 0;
44 : // virtual void stop(const nlohmann::json& args) = 0;
45 :
46 : // Meant to process an incoming raw byte buffer and extract complete frames of arbitrary types in specialized models.
47 : virtual void handle_daq_frame(char* buffer) = 0;
48 : virtual std::size_t get_expected_frame_size() const = 0;
49 :
50 0 : void set_sink_config(const appmodel::DataMoveCallbackConf* sink_conf)
51 : {
52 0 : m_sink_conf = sink_conf;
53 0 : }
54 :
55 : // Sink or destination related
56 : const appmodel::DataMoveCallbackConf* m_sink_conf;
57 : };
58 :
59 : } // namespace dunedaq::asiolibs
60 :
61 : #endif // ASIOLIBS_SRC_SOURCECONCEPT_HPP_
|