DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
CreateGenericReceiver.hpp
Go to the documentation of this file.
1
8#ifndef ASIOLIBS_SRC_CREATEGENERICRECEIVER_HPP_
9#define ASIOLIBS_SRC_CREATEGENERICRECEIVER_HPP_
10
13
16
18
19#include <memory>
20
22DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::CRTGrenobleTypeAdapter, "CRTGrenobleFrame")
23
24namespace dunedaq::asiolibs {
25
26std::shared_ptr<GenericReceiverConcept>
27createGenericReceiver(const std::string& conn_uid, const std::string& raw_data_receiver_connection_name)
28{
29 const auto datatypes = dunedaq::iomanager::IOManager::get()->get_datatypes(conn_uid);
30 if (datatypes.size() != 1) {
31 ers::error(dunedaq::datahandlinglibs::GenericConfigurationError(ERS_HERE,
32 "Multiple output data types specified! Expected only a single type!"));
33 }
34 const std::string raw_dt = *datatypes.begin();
35 TLOG() << "Choosing specializations for GenericReceiverConcept for output connection "
36 << " [uid:" << conn_uid << " , data_type:" << raw_dt << ']';
37
38 if (raw_dt.find("CRTBernFrame") != std::string::npos) {
39 return std::make_shared<GenericReceiverModel<fdreadoutlibs::types::CRTBernTypeAdapter>>(raw_data_receiver_connection_name);
40 } else if (raw_dt.find("CRTGrenobleFrame") != std::string::npos) {
41 return std::make_shared<GenericReceiverModel<fdreadoutlibs::types::CRTGrenobleTypeAdapter>>(raw_data_receiver_connection_name);
42 }
43
44 return nullptr;
45}
46
47} // namespace dunedaq::asiolibs
48
49#endif // ASIOLIBS_SRC_CREATEGENERICRECEIVER_HPP_
#define ERS_HERE
#define DUNE_DAQ_TYPESTRING(Type, typestring)
static std::shared_ptr< IOManager > get()
Definition IOManager.hpp:40
#define TLOG(...)
Definition macro.hpp:22
std::shared_ptr< GenericReceiverConcept > createGenericReceiver(const std::string &conn_uid, const std::string &raw_data_receiver_connection_name)
Including Qt Headers.
void error(const Issue &issue)
Definition ers.hpp:81