artdaq  v3_12_02
CompositeDriver.hh
1 #ifndef artdaq_Application_CompositeDriver_hh
2 #define artdaq_Application_CompositeDriver_hh
3 
4 #include "TRACE/tracemf.h" // Pre-empt TRACE/trace.h from Fragment.hh.
5 #include "artdaq-core/Data/Fragment.hh"
6 
7 #include <vector>
8 #include "artdaq/Generators/CommandableFragmentGenerator.hh"
9 #include "fhiclcpp/fwd.h"
10 
11 namespace artdaq {
19 {
20 public:
31  explicit CompositeDriver(fhicl::ParameterSet const& ps);
32 
36  virtual ~CompositeDriver() noexcept;
37 
41  void start() override;
42 
46  void stopNoMutex() override;
47 
51  void stop() override;
52 
56  void pause() override;
57 
61  void resume() override;
62 
63 private:
64  CompositeDriver(CompositeDriver const&) = delete;
65  CompositeDriver(CompositeDriver&&) = delete;
66  CompositeDriver& operator=(CompositeDriver const&) = delete;
67  CompositeDriver& operator=(CompositeDriver&&) = delete;
68 
69  std::vector<artdaq::Fragment::fragment_id_t> fragmentIDs() override;
70 
71  bool getNext_(artdaq::FragmentPtrs& frags) override;
72 
73  bool makeChildGenerator_(fhicl::ParameterSet const&);
74 
75  std::vector<std::unique_ptr<CommandableFragmentGenerator>> generator_list_;
76  std::vector<bool> generator_active_list_;
77 };
78 } // namespace artdaq
79 #endif /* artdaq_Application_CompositeDriver_hh */
void start() override
Start all configured CommandableFragmentGenerators.
virtual ~CompositeDriver() noexcept
Destructor. Calls the destructors for each configured CommandableFragmentGenerator.
CompositeDriver handles a set of lower-level generators.
void pause() override
Pause all configured CommandableFragmentGenerators.
void stop() override
Call stop methods for all configured CommandableFragmentGenerators. Currently handled by stopNoMutex...
CommandableFragmentGenerator is a FragmentGenerator-derived abstract class that defines the interface...
CompositeDriver(fhicl::ParameterSet const &ps)
CompositeDriver Constructor.
void resume() override
Resume all configured CommandableFragmentGenerators.
void stopNoMutex() override
Call non-locked stop methods for all configured CommandableFragmentGenerators.