34{
36 if (datatypes.size() != 1) {
38 "Multiple output data types specified! Expected only a single type!"));
39 }
40 std::string raw_dt{ *datatypes.begin() };
41 TLOG() <<
"Choosing specializations for SourceModel for output connection "
42 << " [uid:" << conn_uid << " , data_type:" << raw_dt << ']';
43
44 if (raw_dt.find("WIBEthFrame") != std::string::npos) {
45
46 auto source_model = std::make_shared<SourceModel<fdreadoutlibs::types::DUNEWIBEthTypeAdapter>>();
47
48
49 source_model->set_sink_name(conn_uid);
50
51
52 source_model->set_sink(conn_uid, callback_mode);
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 return source_model;
68
69 } else if (raw_dt.find("TDEFrame") != std::string::npos) {
70
71 auto source_model = std::make_shared<SourceModel<fdreadoutlibs::types::TDEFrameTypeAdapter>>();
72 source_model->set_sink_name(conn_uid);
73 source_model->set_sink(conn_uid, callback_mode);
74
75
76 return source_model;
77 } else if (raw_dt.find("CRTBernFrame") != std::string::npos) {
78 auto source_model = std::make_shared<SourceModel<fdreadoutlibs::types::CRTBernTypeAdapter>>();
79 source_model->set_sink_name(conn_uid);
80 source_model->set_sink(conn_uid, callback_mode);
81 return source_model;
82 } else if (raw_dt.find("CRTGrenobleFrame") != std::string::npos) {
83 auto source_model = std::make_shared<SourceModel<fdreadoutlibs::types::CRTGrenobleTypeAdapter>>();
84 source_model->set_sink_name(conn_uid);
85 source_model->set_sink(conn_uid, callback_mode);
86 return source_model;
87 }
88
89 return nullptr;
90}