artdaq  v3_12_02
TransferWrapper.hh
1 #ifndef artdaq_ArtModules_TransferWrapper_hh
2 #define artdaq_ArtModules_TransferWrapper_hh
3 
4 #include "artdaq-core/Data/RawEvent.hh"
5 #include "artdaq/ExternalComms/CommanderInterface.hh"
6 #include "artdaq/TransferPlugins/TransferInterface.hh"
7 
8 namespace fhicl {
9 class ParameterSet;
10 }
11 
12 #include <iostream>
13 #include <memory>
14 #include <string>
15 #include <unordered_map>
16 
17 namespace artdaq {
18 class Fragment;
19 
32 {
33 public:
56  explicit TransferWrapper(const fhicl::ParameterSet& pset);
57 
61  virtual ~TransferWrapper();
62 
67  artdaq::FragmentPtrs receiveMessage();
72  std::unordered_map<artdaq::Fragment::type_t, std::unique_ptr<artdaq::Fragments>> receiveMessages();
73 
78  artdaq::FragmentPtrs receiveInitMessage()
79  {
80  return receiveMessage();
81  }
82 
87  std::shared_ptr<artdaq::detail::RawEventHeader> getEventHeader() { return nullptr; }
88 
89 private:
90  TransferWrapper(TransferWrapper const&) = delete;
91  TransferWrapper(TransferWrapper&&) = delete;
92  TransferWrapper& operator=(TransferWrapper const&) = delete;
93  TransferWrapper& operator=(TransferWrapper&&) = delete;
94 
95  void checkIntegrity(const artdaq::Fragment&) const;
96 
97  void registerMonitor();
98  void unregisterMonitor();
99  std::string getDispatcherStatus();
100 
101  std::size_t timeoutInUsecs_;
102  std::chrono::steady_clock::time_point last_received_data_;
103  std::chrono::steady_clock::time_point last_report_;
104  std::unique_ptr<TransferInterface> transfer_;
105  std::unique_ptr<CommanderInterface> commander_;
106  const fhicl::ParameterSet pset_;
107  const std::string dispatcherHost_;
108  const std::string dispatcherPort_;
109  const std::string serverUrl_;
110  const std::size_t maxEventsBeforeInit_;
111  const std::vector<int> allowedFragmentTypes_;
112  const double runningStateTimeout_;
113  size_t runningStateInterval_us_;
114  const bool quitOnFragmentIntegrityProblem_;
115  const bool multi_run_mode_;
116  bool monitorRegistered_;
117 }; // namespace artdaq
118 } // namespace artdaq
119 
120 #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.