artdaq  v3_09_00
CompositeDriver.hh
1 #ifndef artdaq_Application_CompositeDriver_hh
2 #define artdaq_Application_CompositeDriver_hh
3 
4 #include <vector>
5 #include "artdaq-core/Data/Fragment.hh"
6 #include "artdaq/Generators/CommandableFragmentGenerator.hh"
7 #include "fhiclcpp/fwd.h"
8 
9 namespace artdaq {
17 {
18 public:
29  explicit CompositeDriver(fhicl::ParameterSet const& ps);
30 
34  virtual ~CompositeDriver() noexcept;
35 
39  void start() override;
40 
44  void stopNoMutex() override;
45 
49  void stop() override;
50 
54  void pause() override;
55 
59  void resume() override;
60 
61 private:
62  CompositeDriver(CompositeDriver const&) = delete;
63  CompositeDriver(CompositeDriver&&) = delete;
64  CompositeDriver& operator=(CompositeDriver const&) = delete;
65  CompositeDriver& operator=(CompositeDriver&&) = delete;
66 
67  std::vector<artdaq::Fragment::fragment_id_t> fragmentIDs() override;
68 
69  bool getNext_(artdaq::FragmentPtrs& frags) override;
70 
71  bool makeChildGenerator_(fhicl::ParameterSet const&);
72 
73  std::vector<std::unique_ptr<CommandableFragmentGenerator>> generator_list_;
74  std::vector<bool> generator_active_list_;
75 };
76 } // namespace artdaq
77 #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.