37 if (datatypes.size() != 1) {
39 "Multiple output data types specified! Expected only a single type!"));
41 std::string raw_dt{ *datatypes.begin() };
42 TLOG() <<
"Choosing specializations for ElinkModel for output connection "
43 <<
" [uid:" << conn_uid <<
" , data_type:" << raw_dt <<
']';
79 if (raw_dt.find(
"PDSStreamFrame") != std::string::npos) {
81 auto elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>>();
82 elink_model->set_sink(conn_uid);
83 auto& parser = elink_model->get_parser();
84 auto& sink = elink_model->get_sink();
85 parser.process_chunk_func = parsers::fixsizedChunkInto<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>(sink);
88 }
else if (raw_dt.find(
"PDSFrame") != std::string::npos) {
90 auto elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>>();
91 elink_model->set_sink(conn_uid);
92 auto& parser = elink_model->get_parser();
93 auto& sink = elink_model->get_sink();
94 parser.process_chunk_func = parsers::fixsizedChunkInto<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>(sink);
98 }
else if (raw_dt.find(
"varsize") != std::string::npos) {
100 auto elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::VariableSizePayloadTypeAdapter>>();
101 elink_model->set_sink(conn_uid);
102 auto& parser = elink_model->get_parser();
103 auto& sink = elink_model->get_sink();
104 parser.process_chunk_func = parsers::varsizedChunkIntoWrapper(sink);
105 parser.process_shortchunk_func = parsers::varsizedShortchunkIntoWrapper(sink);