artdaq  v3_11_01
TransferWrapper.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/ExternalComms/CommanderInterface.hh"
10 #include "artdaq/TransferPlugins/TransferInterface.hh"
11 
12 namespace fhicl {
13 class ParameterSet;
14 }
15 
16 namespace artdaq {
17 class Fragment;
18 
31 {
32 public:
55  explicit TransferWrapper(const fhicl::ParameterSet& pset);
56 
60  virtual ~TransferWrapper();
61 
66  artdaq::FragmentPtrs receiveMessage();
71  std::unordered_map<artdaq::Fragment::type_t, std::unique_ptr<artdaq::Fragments>> receiveMessages();
72 
77  artdaq::FragmentPtrs receiveInitMessage()
78  {
79  return receiveMessage();
80  }
81 
86  std::shared_ptr<artdaq::detail::RawEventHeader> getEventHeader() { return nullptr; }
87 
88 private:
89  TransferWrapper(TransferWrapper const&) = delete;
90  TransferWrapper(TransferWrapper&&) = delete;
91  TransferWrapper& operator=(TransferWrapper const&) = delete;
92  TransferWrapper& operator=(TransferWrapper&&) = delete;
93 
94  void checkIntegrity(const artdaq::Fragment&) const;
95 
96  void registerMonitor();
97  void unregisterMonitor();
98  std::string getDispatcherStatus();
99 
100  std::size_t timeoutInUsecs_;
101  std::chrono::steady_clock::time_point last_received_data_;
102  std::chrono::steady_clock::time_point last_report_;
103  std::unique_ptr<TransferInterface> transfer_;
104  std::unique_ptr<CommanderInterface> commander_;
105  const fhicl::ParameterSet pset_;
106  const std::string dispatcherHost_;
107  const std::string dispatcherPort_;
108  const std::string serverUrl_;
109  const std::size_t maxEventsBeforeInit_;
110  const std::vector<int> allowedFragmentTypes_;
111  const double runningStateTimeout_;
112  size_t runningStateInterval_us_;
113  const bool quitOnFragmentIntegrityProblem_;
114  const bool multi_run_mode_;
115  bool monitorRegistered_;
116 }; // namespace artdaq
117 } // namespace artdaq
118 
119 #endif /* artdaq_ArtModules_TransferWrapper_hh */
TransferWrapper(const fhicl::ParameterSet &pset)
TransferWrapper Constructor.
virtual ~TransferWrapper()
TransferWrapper Destructor.
artdaq::FragmentPtrs receiveMessage()
Receive a Fragment from the TransferInterface, and send it to art.
TransferWrapper wraps a TransferInterface so that it can be used in the ArtdaqInput class to make an ...
std::shared_ptr< artdaq::detail::RawEventHeader > getEventHeader()
Get a pointer to the last received RawEventHeader.
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.