artdaq  v3_07_01
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  std::vector<artdaq::Fragment::fragment_id_t> fragmentIDs() override;
63 
64  bool getNext_(artdaq::FragmentPtrs& output) override;
65 
66  bool makeChildGenerator_(fhicl::ParameterSet const&);
67 
68  std::vector<std::unique_ptr<CommandableFragmentGenerator>> generator_list_;
69  std::vector<bool> generator_active_list_;
70 };
71 } // namespace artdaq
72 #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.