29ConfigurationManager::ConfigurationManager(std::string& config_spec, std::string& app_name, std::string& session_name)
30 : m_confdb(new
conffwk::Configuration(config_spec))
31 , m_app_name(app_name)
32 , m_session_name(session_name)
33 , m_oks_config_spec(config_spec)
35 TLOG() <<
"configSpec <" << config_spec <<
"> session name " << session_name <<
" application name " << app_name;
37 TLOG_DBG(5) <<
"getting session " << session_name;
39 if (m_session ==
nullptr) {
40 TLOG() <<
"Failed to get session " << session_name;
46ConfigurationManager::initialize()
51 TLOG_DBG(5) <<
"getting app " << m_app_name;
53 if (m_application ==
nullptr) {
54 TLOG() <<
"Failed to get app " << m_app_name;
58 TLOG_DBG(5) <<
"getting modules for app " << m_app_name;
61 auto cpos = m_oks_config_spec.find(
":") + 1;
62 std::string oksFile = m_oks_config_spec.substr(cpos);
63 m_modules = smart_daq_app->generate_modules(m_session);
65 for (
auto& plan : smart_daq_app->get_action_plans()) {
66 auto cmd = plan->get_command()->get_cmd();
67 TLOG_DBG(6) <<
"Registering action plan " << plan->UID() <<
" for cmd " << cmd;
68 if (m_action_plans.count(cmd)) {
69 throw ActionPlanValidationFailed(
70 ERS_HERE, cmd,
"N/A",
"Multiple ActionPlans registered for cmd, conflicting plan is " + plan->UID());
72 for (
auto& step : plan->get_steps()) {
74 if (step_by_type ==
nullptr) {
75 throw ActionPlanValidationFailed(
76 ERS_HERE, cmd,
"N/A",
"ActionPlans for SmartDaqApplications must use DaqModulesGroupByType");
79 m_action_plans[cmd] = plan;
84 m_modules = daq_app->get_modules();
86 for (
auto& plan : daq_app->get_action_plans()) {
87 auto cmd = plan->get_command()->get_cmd();
88 TLOG_DBG(6) <<
"Registering action plan " << plan->UID() <<
" for cmd " << cmd;
89 if (m_action_plans.count(cmd)) {
90 throw ActionPlanValidationFailed(
91 ERS_HERE, cmd,
"N/A",
"Multiple ActionPlans registered for cmd, conflicting plan is " + plan->UID());
93 m_action_plans[cmd] = plan;
96 throw(NotADaqApplication(
ERS_HERE, m_application->UID()));
100 m_connsvc_config = m_session->get_connectivity_service();
102 std::set<std::string> connectionsAdded;
103 for (
auto mod : m_modules) {
104 TLOG() <<
"initialising " << mod->class_name() <<
" module " << mod->UID();
106 auto outputs = mod->get_outputs();
108 for (
auto con : connections) {
109 auto [
c, inserted] = connectionsAdded.insert(con->UID());
116 TLOG() <<
"Adding queue " << queue->UID();
117 m_queues.emplace_back(queue);
121 m_networkconnections.emplace_back(net_con);
126 m_initialized =
true;
130ConfigurationManager::action_plan(std::string cmd)
const
132 if (m_action_plans.count(cmd)) {
133 return m_action_plans.at(cmd);
const TARGET * cast() const noexcept
Casts object to different class.
virtual std::vector< const dunedaq::conffwk::DalObject * > get(const std::string &name, bool upcast_unregistered=true) const
Get values of relationships and results of some algorithms as a vector of dunedaq::conffwk::DalObject...