artdaq  v3_09_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::unique_ptr<TransferInterface> transfer_;
102  std::unique_ptr<CommanderInterface> commander_;
103  const fhicl::ParameterSet pset_;
104  const std::string dispatcherHost_;
105  const std::string dispatcherPort_;
106  const std::string serverUrl_;
107  const std::size_t maxEventsBeforeInit_;
108  const std::vector<int> allowedFragmentTypes_;
109  const double runningStateTimeout_;
110  size_t runningStateInterval_us_;
111  const bool quitOnFragmentIntegrityProblem_;
112  const bool multi_run_mode_;
113  bool monitorRegistered_;
114 }; // namespace artdaq
115 } // namespace artdaq
116 
117 #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.