Line data Source code
1 : #ifndef artdaq_Application_MPI2_EventBuilderApp_hh
2 : #define artdaq_Application_MPI2_EventBuilderApp_hh
3 :
4 : #include "artdaq/Application/Commandable.hh"
5 : #include "artdaq/Application/EventBuilderCore.hh"
6 :
7 : #include <memory>
8 :
9 : namespace artdaq {
10 : class EventBuilderApp;
11 : }
12 :
13 : /**
14 : * \brief EventBuilderApp is an artdaq::Commandable derived class which controls the EventBuilderCore
15 : */
16 : class artdaq::EventBuilderApp : public artdaq::Commandable
17 : {
18 : public:
19 : /**
20 : * \brief EventBuilderApp Constructor
21 : */
22 : EventBuilderApp();
23 :
24 : /**
25 : * \brief Copy Constructor is deleted
26 : */
27 : EventBuilderApp(EventBuilderApp const&) = delete;
28 :
29 : /**
30 : * \brief Default Destructor
31 : */
32 0 : virtual ~EventBuilderApp() = default;
33 :
34 : /**
35 : * \brief Copy Assignment Operator is deleted
36 : * \return EventBuilderApp copy
37 : */
38 : EventBuilderApp& operator=(EventBuilderApp const&) = delete;
39 : EventBuilderApp(EventBuilderApp&&) = delete; ///< Move Constructor is deleted
40 : EventBuilderApp& operator=(EventBuilderApp&&) = delete; ///< Move Assignment Operator is deleted
41 :
42 : // these methods provide the operations that are used by the state machine
43 : /**
44 : * \brief Initialize the EventBuilderCore
45 : * \param pset ParameterSet used to configure the EventBuilderCore
46 : * \return Whether the transition succeeded
47 : */
48 : bool do_initialize(fhicl::ParameterSet const& pset, uint64_t, uint64_t) override;
49 :
50 : /**
51 : * \brief Start the EventBuilderCore
52 : * \param id Run ID of new run
53 : * \return Whether the transition succeeded
54 : */
55 : bool do_start(art::RunID id, uint64_t, uint64_t) override;
56 :
57 : /**
58 : * \brief Stop the EventBuilderCore
59 : * \return Whether the transition succeeded
60 : */
61 : bool do_stop(uint64_t, uint64_t) override;
62 :
63 : /**
64 : * \brief Pause the EventBuilderCore
65 : * \return Whether the transition succeeded
66 : */
67 : bool do_pause(uint64_t, uint64_t) override;
68 :
69 : /**
70 : * \brief Resume the EventBuilderCore
71 : * \return Whether the transition succeeded
72 : */
73 : bool do_resume(uint64_t, uint64_t) override;
74 :
75 : /**
76 : * \brief Shutdown the EventBuilderCore
77 : * \return Whether the transition succeeded
78 : */
79 : bool do_shutdown(uint64_t) override;
80 :
81 : /**
82 : * \brief Soft-Initialize the EventBuilderCore
83 : * \param pset ParameterSet used to configure the EventBuilderCore
84 : * \return Whether the transition succeeded
85 : */
86 : bool do_soft_initialize(fhicl::ParameterSet const& pset, uint64_t, uint64_t) override;
87 :
88 : /**
89 : * \brief Reinitialize the EventBuilderCore
90 : * \param pset ParameterSet used to configure the EventBuilderCore
91 : * \return Whether the transition succeeded
92 : */
93 : bool do_reinitialize(fhicl::ParameterSet const& pset, uint64_t, uint64_t) override;
94 :
95 : /**
96 : * \brief Rollover the subrun after the given event
97 : * \param boundary Sequence ID of boundary
98 : * \param subrunNum Number of new subrun
99 : * \return True event_store_ptr is valid
100 : */
101 : bool do_rollover_subrun(uint64_t boundary, uint32_t subrunNum) override;
102 :
103 : /**
104 : * \brief Action taken upon entering the "Booted" state
105 : *
106 : * This is a No-Op
107 : */
108 : void BootedEnter() override;
109 :
110 : /* Report_ptr */
111 : /**
112 : * \brief If which is "transition_status", report the status of the last transition. Otherwise pass through to EventBuilderCore
113 : * \param which What to report on
114 : * \return Report string. Empty for unknown "which" parameter
115 : */
116 : std::string report(std::string const& which) const override;
117 :
118 : /**
119 : * \brief Add the specified configuration archive entry to the EventBuilderCore
120 : * \return Whether the command succeeded
121 : */
122 : bool do_add_config_archive_entry(std::string const&, std::string const&) override;
123 :
124 : /**
125 : * \brief Clear the configuration archive list in the EventBuilderCore
126 : * \return Whether the command succeeded
127 : */
128 : bool do_clear_config_archive() override;
129 :
130 : private:
131 : std::unique_ptr<artdaq::EventBuilderCore> event_builder_ptr_;
132 : };
133 :
134 : #endif /* artdaq_Application_MPI2_EventBuilderApp_hh */
|