DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ConfigurationManager.hpp
Go to the documentation of this file.
1
12#ifndef APPFWK_INCLUDE_APPFWK_CONFIGURATIONMANAGER_HPP_
13#define APPFWK_INCLUDE_APPFWK_CONFIGURATIONMANAGER_HPP_
14
19#include "confmodel/Session.hpp"
21#include "logging/Logging.hpp" // NOTE: if ISSUES ARE DECLARED BEFORE include logging/Logging.hpp, TLOG_DEBUG<<issue wont work.
22
23#include <memory>
24#include <string>
25#include <unordered_map>
26#include <vector>
27
28namespace dunedaq {
29
31 NotADaqApplication,
32 "Application " << app << " is neither a DaqApplication nor a SmartDaqApplication ",
33 ((std::string)app))
34
35ERS_DECLARE_ISSUE(appfwk, MissingComponent, "No such component: " << what, ((std::string)what))
36
38 ActionPlanValidationFailed,
39 "Action plan validation failed: " << cmd << ", module " << module << ": " << message,
40 ((std::string)cmd)((std::string)module)((std::string)message))
41
42namespace appfwk {
43
44class ConfigurationManager
45{
46public:
47 ConfigurationManager(std::string const& config_spec, std::string const& app_name, std::string const& session_name);
48 void initialize();
49
50 const confmodel::Session* session() const { return m_session; }
51 const confmodel::Application* application()
52 {
53 initialize();
54 return m_application;
55 }
56
57 const std::vector<const confmodel::Queue*>& queues()
58 {
59 initialize();
60 return m_queues;
61 }
62 const std::vector<const confmodel::NetworkConnection*>& networkconnections()
63 {
64 initialize();
65 return m_networkconnections;
66 }
67 const std::vector<const confmodel::DaqModule*>& modules()
68 {
69 initialize();
70 return m_modules;
71 }
72 const confmodel::ConnectivityService* connectivity_service()
73 {
74 initialize();
75 return m_connsvc_config;
76 }
77
78 const std::unordered_map<std::string, const confmodel::ActionPlan*>& action_plans()
79 {
80 initialize();
81 return m_action_plans;
82 }
83 const confmodel::ActionPlan* action_plan(std::string cmd) const;
84
85 template<typename T>
86 const T* get_dal(const std::string& name)
87 {
88 return m_confdb->get<T>(name);
89 }
90
91private:
92 std::shared_ptr<conffwk::Configuration> m_confdb;
93 std::string m_app_name;
94 std::string m_session_name;
95 std::string m_oks_config_spec;
96
97 const confmodel::Session* m_session;
98 const confmodel::Application* m_application;
99 std::unordered_map<std::string, const confmodel::ActionPlan*> m_action_plans;
100 std::vector<const confmodel::DaqModule*> m_modules;
101 std::vector<const confmodel::Queue*> m_queues;
102 std::vector<const confmodel::NetworkConnection*> m_networkconnections;
103 const confmodel::ConnectivityService* m_connsvc_config;
104
105 bool m_initialized{ false };
106};
107
108} // namespace appfwk
109} // namespace dunedaq
110
111#endif // APPFWK_INCLUDE_APPFWK_CONFIGURATIONMANAGER_HPP_
#define ERS_DECLARE_ISSUE(namespace_name, class_name, message, attributes)
conffwk entry point
The DUNE-DAQ namespace.
Definition DataStore.hpp:57
Unsupported std::string uri Execution of command failed
Definition Issues.hpp:69
LED calibration failed to initialize
Definition SSPIssues.hpp:22