DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ConfigObjectFactory.cpp
Go to the documentation of this file.
1
4#include "oks/file.hpp"
5
6#include <fmt/core.h> // Replace with std::format when we switch to a newer compiler?
7
8namespace dunedaq {
9namespace appmodel {
10
12 m_config(&parent->configuration()),
13 m_dbfile(parent->config_object().contained_in()),
14 m_app_uid(parent->UID()) {
15
16 //FIXME: remove this hacky hack
18}
19
21 //FIXME: remove this hacky hack
23}
24
26ConfigObjectFactory::create(const std::string& class_name,
27 const std::string& id) const {
29 m_config->create(m_dbfile, class_name, id, cfg_obj);
30 return cfg_obj;
31}
32
33//---
35ConfigObjectFactory::create_queue_obj(const QueueDescriptor* qdesc, std::string uid) const {
36
37 std::string queue_uid(qdesc->get_uid_base() + uid);
38 auto queue_obj = create("Queue", queue_uid);
39 queue_obj.set_by_val<std::string>("data_type", qdesc->get_data_type());
40 queue_obj.set_by_val<std::string>("queue_type", qdesc->get_queue_type());
41 queue_obj.set_by_val<uint32_t>("capacity", qdesc->get_capacity());
42
43 return queue_obj;
44}
45
46//---
48ConfigObjectFactory::create_queue_sid_obj(const QueueDescriptor* qdesc, uint32_t src_id) const {
49 std::string queue_uid(fmt::format("{}{}", qdesc->get_uid_base(), src_id));
50 auto queue_obj = create("QueueWithSourceId", queue_uid);
51
52 queue_obj.set_by_val<std::string>("data_type", qdesc->get_data_type());
53 queue_obj.set_by_val<std::string>("queue_type", qdesc->get_queue_type());
54 queue_obj.set_by_val<uint32_t>("capacity", qdesc->get_capacity());
55 queue_obj.set_by_val<uint32_t>("source_id", src_id);
56
57 return queue_obj;
58}
59
60//---
66
67//---
68
79 std::string app_uid) const {
80
81 auto svc_obj = ndesc->get_associated_service()->config_object();
82 std::string net_id = ndesc->get_uid_base() + app_uid;
83 auto net_obj = create("NetworkConnection", net_id);
84
85 net_obj.set_by_val<std::string>("data_type", ndesc->get_data_type());
86 net_obj.set_by_val<std::string>("connection_type", ndesc->get_connection_type());
87 net_obj.set_by_val<uint32_t>("capacity", ndesc->get_capacity());
88 net_obj.set_obj("associated_service", &svc_obj);
89
90 return net_obj;
91}
92
97
98} // namespace appmodel
99} // namespace dunedaq
conffwk::ConfigObject create_queue_sid_obj(const QueueDescriptor *qdesc, uint32_t src_id) const
ConfigObjectFactory(const SmartDaqApplication *)
conffwk::ConfigObject create_net_obj(const NetworkConnectionDescriptor *ndesc, std::string uid) const
Helper function that gets a network connection config.
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
const std::string & get_connection_type() const
Get "connection_type" attribute value.
const std::string & get_data_type() const
Get "data_type" attribute value. string identifying type of data transferred through this connection.
uint32_t get_capacity() const
Get "capacity" attribute value.
const std::string & get_uid_base() const
Get "uid_base" attribute value. Base for UID string. To be combined with a source id.
const dunedaq::confmodel::Service * get_associated_service() const
Get "associated_service" relationship value. Service provided by this connection.
const std::string & get_queue_type() const
Get "queue_type" attribute value. Type of queue.
const std::string & get_data_type() const
Get "data_type" attribute value. string identifying type of data transferred through this queue.
uint32_t get_capacity() const
Get "capacity" attribute value.
const std::string & get_uid_base() const
Get "uid_base" attribute value. Base for UID string. May be combined with a source id.
void create(const std::string &at, const std::string &class_name, const std::string &id, ConfigObject &object)
Create new object by class name and object id.
const ConfigObject & config_object() const
uint32_t get_source_id() const
Get "source_id" attribute value.
static void set_nolock_mode(bool nl)
Definition file.hpp:385
The DUNE-DAQ namespace.