Line data Source code
1 : #ifndef artdaq_Application_MPI2_DispatcherApp_hh
2 : #define artdaq_Application_MPI2_DispatcherApp_hh
3 :
4 : #include "artdaq/Application/Commandable.hh"
5 : #include "artdaq/Application/DispatcherCore.hh"
6 :
7 : #include "canvas/Persistency/Provenance/RunID.h"
8 :
9 : #include <memory>
10 :
11 : namespace artdaq {
12 : class DispatcherApp;
13 : }
14 :
15 : /**
16 : * \brief DispatcherApp is an artdaq::Commandable derived class which controls the DispatcherCore
17 : */
18 : class artdaq::DispatcherApp : public artdaq::Commandable
19 : {
20 : public:
21 : /**
22 : * \brief DispatcherApp Constructor
23 : */
24 : DispatcherApp();
25 :
26 : /**
27 : * \brief Copy Constructor is Deleted
28 : */
29 : DispatcherApp(DispatcherApp const&) = delete;
30 :
31 : /**
32 : * \brief Default virtual destructor
33 : */
34 0 : virtual ~DispatcherApp() = default;
35 :
36 : /**
37 : * \brief Copy Assignment operator is Deleted
38 : * \return DispatcherApp copy
39 : */
40 : DispatcherApp& operator=(DispatcherApp const&) = delete;
41 : DispatcherApp(DispatcherApp&&) = delete; ///< Move Constructor is deleted
42 : DispatcherApp& operator=(DispatcherApp&&) = delete; ///< Move Assignment Operator is deleted
43 :
44 : // these methods provide the operations that are used by the state machine
45 : /**
46 : * \brief Initialize the DispatcherCore
47 : * \param pset ParameterSet used to initialize the DispatcherCore
48 : * \return Whether the initialize transition succeeded
49 : */
50 : bool do_initialize(fhicl::ParameterSet const& pset, uint64_t, uint64_t) override;
51 :
52 : /**
53 : * \brief Start the DispatcherCore
54 : * \param id Run number of the new run
55 : * \return Whether the start transition succeeded
56 : */
57 : bool do_start(art::RunID id, uint64_t, uint64_t) override;
58 :
59 : /**
60 : * \brief Stop the DispatcherCore
61 : * \return Whether the stop transition succeeded
62 : */
63 : bool do_stop(uint64_t, uint64_t) override;
64 :
65 : /**
66 : * \brief Pause the DispatcherCore
67 : * \return Whether the pause transition succeeded
68 : */
69 : bool do_pause(uint64_t, uint64_t) override;
70 :
71 : /**
72 : * \brief Resume the DispatcherCore
73 : * \return Whether the resume transition succeeded
74 : */
75 : bool do_resume(uint64_t, uint64_t) override;
76 :
77 : /**
78 : * \brief Shutdown the DispatcherCore
79 : * \return Whether the shutdown transition succeeded
80 : */
81 : bool do_shutdown(uint64_t) override;
82 :
83 : /**
84 : * \brief Soft-initialize the DispatcherCore. No-Op
85 : * \return This function always returns true
86 : */
87 : bool do_soft_initialize(fhicl::ParameterSet const&, uint64_t, uint64_t) override;
88 :
89 : /**
90 : * \brief Reinitialize the DispatcherCore. No-Op
91 : * \return This function always returns true
92 : */
93 : bool do_reinitialize(fhicl::ParameterSet const&, uint64_t, uint64_t) override;
94 :
95 : /**
96 : * \brief If which is "transition_status", report the status of the last transition. Otherwise pass through to DispatcherCore
97 : * \param which What to report on
98 : * \return Report string. Empty for unknown "which" parameter
99 : */
100 : std::string report(std::string const& which) const override;
101 :
102 : /**
103 : * \brief Register an art Online Monitor to the DispatcherCore
104 : * \param info ParameterSet containing information about the monitor
105 : * \return String detailing result status
106 : */
107 : std::string register_monitor(fhicl::ParameterSet const& info) override;
108 :
109 : /**
110 : * \brief Remove an art Online Monitor from the DispatcherCore
111 : * \param label Name of the monitor to remove
112 : * \return String detailing result status
113 : */
114 : std::string unregister_monitor(std::string const& label) override;
115 :
116 : private:
117 : std::unique_ptr<DispatcherCore> Dispatcher_ptr_;
118 : };
119 :
120 : #endif
|