artdaq  v3_12_02
ListenTransferWrapper.hh
1 #ifndef artdaq_ArtModules_TransferWrapper_hh
2 #define artdaq_ArtModules_TransferWrapper_hh
3 
4 #include <iostream>
5 #include <memory>
6 #include <string>
7 
8 #include "artdaq-core/Data/RawEvent.hh"
9 #include "artdaq/TransferPlugins/TransferInterface.hh"
10 
11 namespace fhicl {
12 class ParameterSet;
13 }
14 
15 namespace artdaq {
16 class Fragment;
17 
30 {
31 public:
52  explicit ListenTransferWrapper(const fhicl::ParameterSet& pset);
53 
57  virtual ~ListenTransferWrapper();
58 
63  artdaq::FragmentPtrs receiveMessage();
68  std::unordered_map<artdaq::Fragment::type_t, std::unique_ptr<artdaq::Fragments>> receiveMessages();
69 
74  artdaq::FragmentPtrs receiveInitMessage()
75  {
76  return receiveMessage();
77  }
78 
83  std::shared_ptr<artdaq::detail::RawEventHeader> getEventHeader() { return nullptr; }
84 
85 private:
88  ListenTransferWrapper& operator=(ListenTransferWrapper const&) = delete;
89  ListenTransferWrapper& operator=(ListenTransferWrapper&&) = delete;
90 
91  void checkIntegrity(const artdaq::Fragment&) const;
92 
93  std::size_t timeoutInUsecs_;
94  std::chrono::steady_clock::time_point last_received_data_;
95  std::chrono::steady_clock::time_point last_report_;
96  std::unique_ptr<artdaq::TransferInterface> transfer_;
97  const fhicl::ParameterSet pset_;
98  const std::size_t maxEventsBeforeInit_;
99  const std::vector<int> allowedFragmentTypes_;
100  const double runningStateTimeout_;
101  size_t runningStateInterval_us_;
102  const bool quitOnFragmentIntegrityProblem_;
103  const bool multi_run_mode_;
104 }; // namespace artdaq
105 } // namespace artdaq
106 
107 #endif /* artdaq_ArtModules_TransferWrapper_hh */
virtual ~ListenTransferWrapper()
ListenTransferWrapper Destructor.
artdaq::FragmentPtrs receiveInitMessage()
Receive the Init message from the TransferInterface, and send it to art.
std::unordered_map< artdaq::Fragment::type_t, std::unique_ptr< artdaq::Fragments > > receiveMessages()
Receive all messsages for an event from ArtdaqSharedMemoryService.
std::shared_ptr< artdaq::detail::RawEventHeader > getEventHeader()
Get a pointer to the last received RawEventHeader.
ListenTransferWrapper wraps a TransferInterface so that it can be used in the ArtdaqInput class to ma...
artdaq::FragmentPtrs receiveMessage()
Receive a Fragment from the TransferInterface, and send it to art.
ListenTransferWrapper(const fhicl::ParameterSet &pset)
ListenTransferWrapper Constructor.