9#ifndef APPFWK_SRC_DAQMODULEMANAGER_HPP_
10#define APPFWK_SRC_DAQMODULEMANAGER_HPP_
13#include "nlohmann/json.hpp"
33 DAQModuleManagerNotInitialized,
34 "Command " << cmdid <<
" received before initialization",
39 "\"init\" Command received when already initialized",
43 CommandDispatchingFailed,
44 "Command " << cmdid << " was not executed correctly by: " << modules,
45 ((
std::
string)cmdid)((
std::
string)modules))
49 "Command " << cmdid << " matches multiple times modules: " << modules,
50 ((
std::
string)cmdid)((
std::
string)modules))
55 ExceptionWhileInfoGathering,
57 module << " threw
exception while info gathering: " << message,
58 ((
std::
string)module),
59 ((
std::
string)message))
63 "No action plan found for command " << cmd << ", taking the following action: " << message,
64 ((
std::
string)cmd)((
std::
string)message))
70constexpr int ACTION_PLANS_REQUIRED = 0;
71constexpr int ACTION_PLANS_REQUIRED_WARNING = 0;
76 explicit DAQModuleManager(
const std::string& session_name);
83 void execute(
const std::string& cmd,
const DAQModule::CommandData_t& cmd_data);
86 typedef std::map<std::string, std::shared_ptr<DAQModule>> DAQModuleMap_t;
88 void init_modules(
const std::vector<const dunedaq::confmodel::DaqModule*>& modules,
opmonlib::OpMonManager&);
90 void check_command_data(
const std::string&
id,
const DAQModule::CommandData_t& cmd_data);
91 DAQModule::CommandData_t get_command_data_for_module(
const std::string& mod_name,
92 const DAQModule::CommandData_t& cmd_data);
93 bool execute_action(
const std::string& mod_name,
const std::string& action,
const DAQModule::CommandData_t& data_obj);
94 void execute_action_plan_step(
const std::string& cmd,
96 const DAQModule::CommandData_t& cmd_data,
97 bool execution_mode_is_serial);
99 void check_mod_has_cmd(
const std::string& cmd,
100 const std::string& mod_class,
102 const std::string& mod_id =
"");
105 std::shared_ptr<ConfigurationManager> m_configuration_mgr;
107 std::string m_session_name;
110 DAQModuleMap_t m_module_map;
111 std::map<std::string, std::vector<std::string>> m_modules_by_type;
#define ERS_DECLARE_ISSUE_BASE(namespace_name, class_name, base_class_name, message, base_attributes, attributes)
#define ERS_DECLARE_ISSUE(namespace_name, class_name, message, attributes)
caught dunedaq::conffwk::Exception exception
Unsupported std::string uri Execution of command failed
init Command received when already initialized
LED calibration failed to initialize
DAQModuleManagerAlreadyInitialized
init Command received when already ERS_EMPTY ConflictingCommandMatching