40 TLOG_DEBUG(6) <<
"Generating modules for application " << this->
UID();
42 std::vector<const confmodel::DaqModule*> modules;
52 if (reader_conf == 0) {
53 throw(BadConf(
ERS_HERE,
"No DataReaderModule configuration given"));
55 const std::string reader_class = reader_conf->get_template_for();
59 if (writer_confs.size() == 0) {
60 throw(BadConf(
ERS_HERE,
"No DataWriterModule configuration given"));
69 auto destination_class = rule->get_destination_class();
70 auto data_type = rule->get_descriptor()->get_data_type();
72 if (destination_class ==
"FDDataHandlerModule") {
73 if (data_type !=
"DataRequest") {
74 dlh_input_qdesc = rule->get_descriptor();
86 std::map<uint32_t, const confmodel::Connection*> data_queues_by_sid;
88 uint16_t conn_idx = 0;
93 if (d2d_conn_res->disabled(*
session)) {
94 TLOG_DEBUG(7) <<
"Ignoring disabled DetectorToDaqConnection " << d2d_conn_res->UID();
98 TLOG_DEBUG(6) <<
"Processing DetectorToDaqConnection " << d2d_conn_res->UID();
103 throw(BadConf(
ERS_HERE,
"CRTReaderApplication contains something other than DetectorToDaqConnection"));
106 if (d2d_conn->get_contains().empty()) {
107 throw(BadConf(
ERS_HERE,
"DetectorToDaqConnection does not contain senders or receivers"));
110 std::vector<const confmodel::DetectorStream*> enabled_det_streams;
112 for (
auto stream : d2d_conn->get_streams()) {
115 if (stream->disabled(*
session)) {
116 TLOG_DEBUG(7) <<
"Ignoring disabled DetectorStream " << stream->UID();
120 enabled_det_streams.push_back(stream);
124 std::vector<const conffwk::ConfigObject*> data_queue_objs;
128 for (
auto ds : enabled_det_streams) {
131 data_queue_objs.push_back(&data_queue->config_object());
132 data_queues_by_sid[ds->get_source_id()] = data_queue;
146 std::string reader_uid(fmt::format(
"crtdatareader-{}-{}", this->
UID(), std::to_string(conn_idx++)));
147 TLOG_DEBUG(6) << fmt::format(
"creating OKS configuration object for Data reader class {} with id {}", reader_class, reader_uid);
148 auto reader_obj = obj_fac.
create(reader_class, reader_uid);
151 reader_obj.
set_obj(
"configuration", &reader_conf->config_object());
152 reader_obj.set_objs(
"connections", {&d2d_conn_res->config_object()});
153 reader_obj.set_objs(
"outputs", data_queue_objs);
170 for (
const auto writer_conf : writer_confs) {
172 const std::string writer_class = writer_conf->get_template_for();
174 std::string writer_uid(fmt::format(
"socketdatawriter-{}-{}", this->
UID(), std::to_string(conn_idx++)));
176 "Creating OKS configuration object for socket data writer class {} with id {}", writer_class, writer_uid);
177 auto writer_obj = obj_fac.
create(writer_class, writer_uid);
180 writer_obj.
set_obj(
"configuration", &writer_conf->config_object());
181 writer_obj.set_objs(
"connections", {&d2d_conn_res->config_object()});
182 writer_obj.set_objs(
"inputs", data_queue_objs);