DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
DaqModule.cpp
Go to the documentation of this file.
4#include "conffwk/Errors.hpp"
6
7#include "logging/Logging.hpp"
8
9 // include files for classes used in relationships and algorithms
10
13
14
15namespace dunedaq {
16 namespace confmodel {
17 const std::string& DaqModule::s_class_name(dunedaq::conffwk::DalFactory::instance().get_known_class_name_ref("DaqModule"));
18
19 // the constructor
20
26
27
28 void DaqModule::print(unsigned int indent, bool print_header, std::ostream& s) const
29 {
30 check_init();
31
32 try {
33 const std::string str(indent+2, ' ');
34
35 if (print_header)
36 p_hdr(s, indent, s_class_name, "dunedaq::confmodel");
37
38
39 // print direct relationships
40
44 }
45 catch (dunedaq::conffwk::Exception & ex) {
47 }
48 }
49
50
51 void DaqModule::init(bool init_children)
52 {
53 p_was_read = true;
55 TLOG_DEBUG(5) << "read object " << this << " (class " << s_class_name << ')';
56
57 try {
61 }
62 catch (dunedaq::conffwk::Exception & ex) {
63 throw_init_ex(ex);
64 }
65 }
66
68 {
69 }
70
71 std::vector<const dunedaq::conffwk::DalObject *> DaqModule::get(const std::string& name, bool upcast_unregistered) const
72 {
73 std::vector<const dunedaq::conffwk::DalObject *> vec;
74
75 if (!get(name, vec, upcast_unregistered, true))
76 throw_get_ex(name, s_class_name, this);
77
78 return vec;
79 }
80
81 bool DaqModule::get(const std::string& name, std::vector<const dunedaq::conffwk::DalObject *>& vec, bool upcast_unregistered, bool first_call) const
82 {
83 if (first_call)
84 {
85 std::lock_guard scoped_lock(m_mutex);
86
87 check();
88 check_init();
89
90 if (get_rel_objects(name, upcast_unregistered, vec))
91 return true;
92 }
93
94 if (first_call)
95 return get_algo_objects(name, vec);
96
97 return false;
98 }
99
100 void DaqModule::set_inputs(const std::vector<const dunedaq::confmodel::Connection*>& value)
101 {
102 _set_objects(s_inputs, value);
103 }
104
105 void DaqModule::set_outputs(const std::vector<const dunedaq::confmodel::Connection*>& value)
106 {
107 _set_objects(s_outputs, value);
108 }
109
110 void DaqModule::set_used_resources(const std::vector<const dunedaq::confmodel::HostComponent*>& value)
111 {
113 }
114
115 }
116}
The base class for any generated DAL object.
Definition DalObject.hpp:45
void p_hdr(std::ostream &s, unsigned int indent, const std::string &cl, const char *nm=nullptr) const
print object headers
Definition DalObject.cpp:65
void throw_init_ex(dunedaq::conffwk::Exception &ex)
throw object initialisation exception (i.e.
Definition DalObject.cpp:74
void increment_read() noexcept
static void p_error(std::ostream &s, dunedaq::conffwk::Exception &ex)
print error text
Definition DalObject.cpp:59
bool get_rel_objects(const std::string &name, bool upcast_unregistered, std::vector< const DalObject * > &objs) const
Read relationship values as DAL objects using DAL factory.
Definition DalObject.cpp:8
static void throw_get_ex(const std::string &what, const std::string &class_name, const DalObject *obj)
throw exception in generated get method (i.e.
Definition DalObject.cpp:82
void _set_objects(const std::string &name, const std::vector< const T * > &value)
Helper method for generated set multi-value relationship methods.
std::mutex m_mutex
Used to protect changes of DAL object.
DalRegistry & p_registry
Configuration object.
bool p_was_read
is true, if the object was read
bool get_algo_objects(const std::string &name, std::vector< const DalObject * > &objs) const
Run algorithm and return result as DAL objects using DAL factory.
Definition DalObject.cpp:25
ConfigObject p_obj
Config object used by given template object.
void check_init() const
Check and initialize object if necessary.
DalRegistry: A registry of DalObjects It provides a single interface to create, cache and manage DalO...
const T * _ref(ConfigObject &obj, const std::string &name, bool read_children)
Get signle value of object's relation and instantiate result with it (multi-thread safe).
void set_inputs(const std::vector< const dunedaq::confmodel::Connection * > &value)
Set "inputs" relationship value. List of connections to/from this module.
static const std::string s_inputs
Definition DaqModule.hpp:94
virtual void init(bool init_children)
Definition DaqModule.cpp:51
static const std::string & s_class_name
Definition DaqModule.hpp:51
static const std::string s_outputs
Definition DaqModule.hpp:95
static const std::string s_used_resources
Definition DaqModule.hpp:96
virtual ~DaqModule() noexcept
Definition DaqModule.cpp:67
void set_used_resources(const std::vector< const dunedaq::confmodel::HostComponent * > &value)
Set "used_resources" relationship value.
virtual void print(unsigned int offset, bool print_header, std::ostream &s) const
Print details of the DaqModule object.
Definition DaqModule.cpp:28
DaqModule(conffwk::DalRegistry &db, const conffwk::ConfigObject &obj) noexcept
Definition DaqModule.cpp:21
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...
Definition DaqModule.cpp:71
std::vector< const dunedaq::confmodel::HostComponent * > m_used_resources
Definition DaqModule.hpp:87
std::vector< const dunedaq::confmodel::Connection * > m_inputs
Definition DaqModule.hpp:85
std::vector< const dunedaq::confmodel::Connection * > m_outputs
Definition DaqModule.hpp:86
void set_outputs(const std::vector< const dunedaq::confmodel::Connection * > &value)
Set "outputs" relationship value. Output connections from this module.
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112
void p_mv_rel(std::ostream &s, const std::string &str, const std::string &name, const T &objs) noexcept
print weak multi-value relationship
Including Qt Headers.