artdaq  v3_02_00
CompositeDriver.hh
1 #ifndef artdaq_Application_CompositeDriver_hh
2 #define artdaq_Application_CompositeDriver_hh
3 
4 #include "fhiclcpp/fwd.h"
5 #include "artdaq/Application/CommandableFragmentGenerator.hh"
6 #include "artdaq-core/Data/Fragment.hh"
7 #include <vector>
8 
9 namespace artdaq
10 {
18  {
19  public:
30  explicit CompositeDriver(fhicl::ParameterSet const& ps);
31 
35  virtual ~CompositeDriver() noexcept;
36 
40  void start() override;
41 
45  void stopNoMutex() override;
46 
50  void stop() override;
51 
55  void pause() override;
56 
60  void resume() override;
61 
62  private:
63  std::vector<artdaq::Fragment::fragment_id_t> fragmentIDs() override;
64 
65  bool getNext_(artdaq::FragmentPtrs& output) override;
66 
67  bool makeChildGenerator_(fhicl::ParameterSet const&);
68 
69  std::vector<std::unique_ptr<CommandableFragmentGenerator>> generator_list_;
70  std::vector<bool> generator_active_list_;
71  };
72 }
73 #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.