artdaq  v3_03_00
xmlrpc_commander.hh
1 /* DarkSide 50 DAQ program
2  * This file add the xmlrpc commander as a client to the SC
3  * Author: Alessandro Razeto <Alessandro.Razeto@ge.infn.it>
4  */
5 #ifndef artdaq_ExternalComms_xmlrpc_commander_hh
6 #define artdaq_ExternalComms_xmlrpc_commander_hh
7 
8 #include <mutex>
9 #include "artdaq/ExternalComms/CommanderInterface.hh"
10 
11 namespace artdaq
12 {
13 
18 {
19 public:
31  xmlrpc_commander(fhicl::ParameterSet ps, artdaq::Commandable& commandable);
32 
36  void run_server() override;
37 
43  std::string send_register_monitor(std::string monitor_fhicl) override;
44 
50  std::string send_unregister_monitor(std::string monitor_label) override;
51 
59  std::string send_init(fhicl::ParameterSet, uint64_t, uint64_t) override;
60 
68  std::string send_soft_init(fhicl::ParameterSet, uint64_t, uint64_t) override;
69 
77  std::string send_reinit(fhicl::ParameterSet, uint64_t, uint64_t) override;
78 
86  std::string send_start(art::RunID, uint64_t, uint64_t) override;
87 
95  std::string send_pause(uint64_t, uint64_t) override;
96 
104  std::string send_resume(uint64_t, uint64_t) override;
105 
113  std::string send_stop(uint64_t, uint64_t) override;
114 
122  std::string send_shutdown(uint64_t) override;
123 
130  std::string send_status() override;
131 
138  std::string send_report(std::string) override;
139 
146  std::string send_legal_commands() override;
147 
155  std::string send_trace_get(std::string) override;
156 
167  std::string send_trace_set(std::string, std::string, uint64_t) override;
168 
175  std::string send_meta_command(std::string, std::string) override;
176 
184  std::string send_rollover_subrun(uint64_t) override;
185 
186 
187 private:
188  xmlrpc_commander(const xmlrpc_commander&) = delete;
189 
191 
192  int port_;
193  std::string serverUrl_;
194 
195  std::string send_command_(std::string command);
196  std::string send_command_(std::string command, std::string arg);
197  std::string send_command_(std::string command, fhicl::ParameterSet pset, uint64_t a, uint64_t b);
198  std::string send_command_(std::string command, uint64_t a, uint64_t b);
199  std::string send_command_(std::string command, art::RunID r, uint64_t a, uint64_t b);
200  std::string send_command_(std::string, uint64_t);
201  std::string send_command_(std::string, std::string, std::string);
202  std::string send_command_(std::string, std::string, std::string, uint64_t);
203 
204 public:
205  std::timed_mutex mutex_;
206  std::unique_ptr<xmlrpc_c::serverAbyss> server;
207 };
208 
209 }
210 
211 #endif /* artdaq_ExternalComms_xmlrpc_commander_hh */
std::string send_stop(uint64_t, uint64_t) override
Send a stop command over XMLRPC
std::string send_shutdown(uint64_t) override
Send a shutdown command over XMLRPC
This interface defines the functions used to transfer data between artdaq applications.
std::string send_unregister_monitor(std::string monitor_label) override
Send an unregister_monitor command over XMLRPC
std::string send_register_monitor(std::string monitor_fhicl) override
Send a register_monitor command over XMLRPC
Commandable is the base class for all artdaq components which implement the artdaq state machine...
Definition: Commandable.hh:20
xmlrpc_commander(fhicl::ParameterSet ps, artdaq::Commandable &commandable)
xmlrpc_commander Constructor
std::string send_soft_init(fhicl::ParameterSet, uint64_t, uint64_t) override
Send a soft_init command over XMLRPC
std::string send_pause(uint64_t, uint64_t) override
Send a pause command over XMLRPC
std::string send_rollover_subrun(uint64_t) override
Send a send_rollover_subrun command over XMLRPC
std::string send_status() override
Send a status command over XMLRPC
std::string send_legal_commands() override
Send a legal_commands command over XMLRPC
The xmlrpc_commander class serves as the XMLRPC server run in each artdaq application.
std::string send_report(std::string) override
Send a report command over XMLRPC
void run_server() override
Run the XMLRPC server.
std::unique_ptr< xmlrpc_c::serverAbyss > server
XMLRPC server.
std::string send_meta_command(std::string, std::string) override
Send an send_meta_command command over XMLRPC
std::string send_trace_get(std::string) override
Send an send_trace_get command over XMLRPC
std::string send_reinit(fhicl::ParameterSet, uint64_t, uint64_t) override
Send a reinit command over XMLRPC
std::string send_resume(uint64_t, uint64_t) override
Send a resume command over XMLRPC
std::timed_mutex mutex_
XMLRPC mutex.
std::string send_start(art::RunID, uint64_t, uint64_t) override
Send a start command over XMLRPC
std::string send_init(fhicl::ParameterSet, uint64_t, uint64_t) override
Send an init command over XMLRPC
std::string send_trace_set(std::string, std::string, uint64_t) override
Send an send_trace_msgfacility_set command over XMLRPC