$treeview $search $mathjax $extrastylesheet
artdaq
v3_04_01
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #ifndef artdaq_ExternalComms_CommanderInterface_hh 00002 #define artdaq_ExternalComms_CommanderInterface_hh 00003 00004 #include "artdaq/DAQdata/Globals.hh" 00005 #include "fhiclcpp/ParameterSet.h" 00006 #include "artdaq/Application/Commandable.hh" 00007 #include "cetlib/compiler_macros.h" 00008 00009 00010 namespace artdaq 00011 { 00015 class CommanderInterface 00016 { 00017 public: 00021 struct Config 00022 { 00024 fhicl::Atom<int> id{ fhicl::Name{"id"}, fhicl::Comment{"The unique ID associated with this Commander plugin. (ex. XMLRPC Port number)"}, 0 }; 00026 fhicl::Atom<std::string> commanderPluginType{ fhicl::Name{"commanderPluginType"}, fhicl::Comment{"String identifying the name of the CommanderInterface plugin to load"} }; 00027 }; 00029 using Parameters = fhicl::WrappedTable<Config>; 00030 00036 CommanderInterface(const fhicl::ParameterSet& ps, artdaq::Commandable& commandable) 00037 : _commandable(commandable) 00038 , _id(ps.get<int>("id", 0)) 00039 {} 00040 00044 CommanderInterface(const CommanderInterface&) = delete; 00045 00050 CommanderInterface& operator=(const CommanderInterface&) = delete; 00051 00055 virtual ~CommanderInterface(); 00056 00085 virtual void run_server() = 0; 00086 00094 virtual std::string send_init(fhicl::ParameterSet, uint64_t, uint64_t); 00095 00103 virtual std::string send_soft_init(fhicl::ParameterSet, uint64_t, uint64_t); 00104 00112 virtual std::string send_reinit(fhicl::ParameterSet, uint64_t, uint64_t); 00113 00121 virtual std::string send_start(art::RunID, uint64_t, uint64_t); 00122 00130 virtual std::string send_pause(uint64_t, uint64_t); 00131 00139 virtual std::string send_resume(uint64_t, uint64_t); 00140 00148 virtual std::string send_stop(uint64_t, uint64_t); 00149 00157 virtual std::string send_shutdown(uint64_t); 00158 00165 virtual std::string send_status(); 00166 00173 virtual std::string send_report(std::string); 00174 00181 virtual std::string send_legal_commands(); 00182 00189 virtual std::string send_register_monitor(std::string); 00190 00197 virtual std::string send_unregister_monitor(std::string); 00198 00206 virtual std::string send_trace_get(std::string); 00207 00218 virtual std::string send_trace_set(std::string, std::string, uint64_t); 00219 00226 virtual std::string send_meta_command(std::string, std::string); 00227 00235 virtual std::string send_rollover_subrun(uint64_t, uint32_t); 00236 00241 bool GetStatus() { return running_.load(); } 00242 00254 virtual std::string add_config_archive_entry(std::string, std::string); 00255 00264 virtual std::string clear_config_archive(); 00265 00266 private: 00267 00268 public: 00272 artdaq::Commandable& _commandable; 00273 00274 protected: 00275 int _id; 00276 std::atomic<bool> running_; 00277 }; 00278 } 00279 00280 #ifndef EXTERN_C_FUNC_DECLARE_START 00281 #define EXTERN_C_FUNC_DECLARE_START extern "C" { 00282 #endif 00283 00284 #define DEFINE_ARTDAQ_COMMANDER(klass) \ 00285 EXTERN_C_FUNC_DECLARE_START \ 00286 std::unique_ptr<artdaq::CommanderInterface> make(fhicl::ParameterSet const & ps, \ 00287 artdaq::Commandable& commandable) { \ 00288 return std::unique_ptr<artdaq::CommanderInterface>(new klass(ps, commandable)); \ 00289 }} 00290 00291 00292 #endif /* artdaq_ExternalComms_CommanderInterface.hh */ 00293 00294 // Local Variables: 00295 // mode: c++ 00296 // End: