DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ConfigObjectFactory.hpp
Go to the documentation of this file.
1
10#ifndef APPMODEL_INCLUDE_OBJECTFACTORY_HPP_
11#define APPMODEL_INCLUDE_OBJECTFACTORY_HPP_
12
18
21
24
25#include <cstdint>
26#include <string>
27#include <vector>
28
29namespace dunedaq::appmodel {
30
32{
33
35 std::string m_dbfile;
36 std::string m_app_uid;
37
38public:
40
42
43 [[nodiscard]] conffwk::ConfigObject create(const std::string& class_name, const std::string& id) const;
44
45 //---
46 [[nodiscard]] conffwk::ConfigObject create_queue_obj(const QueueDescriptor* qdesc, std::string uid = "") const;
47
48 //---
49 [[nodiscard]] conffwk::ConfigObject create_queue_sid_obj(const QueueDescriptor* qdesc, uint32_t src_id) const;
50
51 //---
53 const confmodel::DetectorStream* stream) const;
54
55 //---
57 uint32_t src_id) const;
58
67 [[nodiscard]] conffwk::ConfigObject create_net_obj(const NetworkConnectionDescriptor* ndesc, std::string uid) const;
68
70
71 template<class T>
72 const T* get_dal(std::string uid) const
73 {
74 return m_config->get<T>(uid);
75 }
76
77 template<class T>
79 {
80 return m_config->get<T>(obj);
81 }
82
83 void update_modules(const std::vector<const confmodel::DaqModule*>& modules)
84 {
86 if (!app->get_modules().empty()) {
87 throw(BadConf(ERS_HERE,
88 "SmartDaqApplication contains DaqModules which would be overwritten by generated DaqModules"));
89 }
90 if (!modules.empty()) {
91 const_cast<SmartDaqApplication*>(app)->set_modules(modules);
93 }
94 }
95};
96
97} // namespace dunedaq::appmodel
98
99#endif // APPMODEL_INCLUDE_OBJECTFACTORY_HPP_
#define ERS_HERE
void update_modules(const std::vector< const confmodel::DaqModule * > &modules)
conffwk::ConfigObject create_queue_sid_obj(const QueueDescriptor *qdesc, uint32_t src_id) const
ConfigObjectFactory(const SmartDaqApplication *)
conffwk::ConfigObject create_callback_sid_obj(const DataMoveCallbackDescriptor *cdesc, uint32_t src_id) const
conffwk::ConfigObject create_net_obj(const NetworkConnectionDescriptor *ndesc, std::string uid) const
Helper function that gets a network connection config.
const T * get_dal(conffwk::ConfigObject &obj) const
const T * get_dal(std::string uid) const
conffwk::ConfigObject create_queue_obj(const QueueDescriptor *qdesc, std::string uid="") const
conffwk::ConfigObject create(const std::string &class_name, const std::string &id) const
void get(const std::string &class_name, const std::string &id, ConfigObject &object, unsigned long rlevel=0, const std::vector< std::string > *rclasses=0)
Get object by class name and object id (multi-thread safe).
void update(const std::vector< std::string > &modified, const std::vector< std::string > &removed, const std::vector< std::string > &created) noexcept
Update cache of objects in case of modification.
conffwk entry point
msgpack::object obj