DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::snbmodules::FileReaderBase Class Referenceabstract

#include <FileReaderBase.hpp>

Public Member Functions

 FileReaderBase (const std::string &name)
 FileReaderBase Constructor.
 
virtual ~FileReaderBase ()
 
 FileReaderBase (const FileReaderBase &)=delete
 FileReaderBase is not copy-constructible.
 
FileReaderBaseoperator= (const FileReaderBase &)=delete
 FileReaderBase is not copy-assignable.
 
 FileReaderBase (FileReaderBase &&)=delete
 FileReaderBase is not move-constructible.
 
FileReaderBaseoperator= (FileReaderBase &&)=delete
 FileReaderBase is not move-assignable.
 
void init (std::shared_ptr< appfwk::ConfigurationManager > cfg)
 
virtual std::shared_ptr< snbmodules::FileSourceConceptcreate_source_emulator (std::string qi, std::atomic< bool > &run_marker)=0
 
void do_conf (const appfwk::DAQModule::CommandData_t &)
 
void do_scrap (const appfwk::DAQModule::CommandData_t &)
 
void do_start (const appfwk::DAQModule::CommandData_t &)
 
void do_stop (const appfwk::DAQModule::CommandData_t &)
 
std::string get_fcr_name ()
 

Private Attributes

bool m_configured
 
std::string m_name
 
std::shared_ptr< appfwk::ConfigurationManager > m_cfg
 
std::map< std::string, std::shared_ptr< snbmodules::FileSourceConcept > > m_source_emus
 
std::atomic< boolm_run_marker
 

Detailed Description

Definition at line 45 of file FileReaderBase.hpp.

Constructor & Destructor Documentation

◆ FileReaderBase() [1/3]

dunedaq::snbmodules::FileReaderBase::FileReaderBase ( const std::string & name)
explicit

FileReaderBase Constructor.

Parameters
nameInstance name for this FileReaderBase instance

Definition at line 8 of file FileReaderBase.hxx.

◆ ~FileReaderBase()

virtual dunedaq::snbmodules::FileReaderBase::~FileReaderBase ( )
inlinevirtual

Definition at line 53 of file FileReaderBase.hpp.

53{}

◆ FileReaderBase() [2/3]

dunedaq::snbmodules::FileReaderBase::FileReaderBase ( const FileReaderBase & )
delete

FileReaderBase is not copy-constructible.

◆ FileReaderBase() [3/3]

dunedaq::snbmodules::FileReaderBase::FileReaderBase ( FileReaderBase && )
delete

FileReaderBase is not move-constructible.

Member Function Documentation

◆ create_source_emulator()

virtual std::shared_ptr< snbmodules::FileSourceConcept > dunedaq::snbmodules::FileReaderBase::create_source_emulator ( std::string qi,
std::atomic< bool > & run_marker )
pure virtual

◆ do_conf()

void dunedaq::snbmodules::FileReaderBase::do_conf ( const appfwk::DAQModule::CommandData_t & )

Definition at line 49 of file FileReaderBase.hxx.

50{
52 << get_fcr_name() << ": Entering do_conf() method";
53
54 if (m_configured) {
55 TLOG_DEBUG(dunedaq::datahandlinglibs::logging::TLVL_WORK_STEPS) << "This module is already configured!";
56 } else {
57 auto cfg = m_cfg->get_dal<appmodel::DataReaderModule>(get_fcr_name());
58
59 std::map<uint32_t, const confmodel::DetectorStream*> streams;
60 for (const auto& det_connections : cfg->get_connections()) {
61
62 for (const auto& stream : det_connections->streams()) {
63 streams[stream->get_source_id()] = stream;
64 }
65 }
66
67 for (const auto& qi : cfg->get_outputs()) {
68 auto q_with_id = qi->cast<confmodel::QueueWithSourceId>();
69 if (q_with_id == nullptr) {
70 throw datahandlinglibs::FailedFakeCardInitialization(
71 ERS_HERE, get_fcr_name(), "Queue is not of type QueueWithSourceId");
72 }
73 if (m_source_emus.find(q_with_id->UID()) == m_source_emus.end()) {
74 TLOG() << "Cannot find queue: " << q_with_id->UID() << std::endl;
75 throw datahandlinglibs::GenericConfigurationError(ERS_HERE, "Cannot find queue: " + q_with_id->UID());
76 }
77 if (m_source_emus[q_with_id->UID()]->is_configured()) {
78 TLOG() << "Emulator for queue name " << q_with_id->UID() << " was already configured";
79 throw datahandlinglibs::GenericConfigurationError(ERS_HERE, "Emulator configured twice: " + q_with_id->UID());
80 }
81 m_source_emus[q_with_id->UID()]->conf(streams[q_with_id->get_source_id()],
82 cfg->get_configuration()->get_snb_conf());
83 }
84 for (auto& [name, emu] : m_source_emus) {
85 if (!emu->is_configured()) {
86 throw datahandlinglibs::GenericConfigurationError(ERS_HERE, "Not all links were configured");
87 }
88 }
89
90 // Mark configured
91 m_configured = true;
92 }
93
95 << get_fcr_name() << ": Exiting do_conf() method";
96}
#define ERS_HERE
std::shared_ptr< appfwk::ConfigurationManager > m_cfg
std::map< std::string, std::shared_ptr< snbmodules::FileSourceConcept > > m_source_emus
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112
#define TLOG(...)
Definition macro.hpp:22

◆ do_scrap()

void dunedaq::snbmodules::FileReaderBase::do_scrap ( const appfwk::DAQModule::CommandData_t & args)

Definition at line 99 of file FileReaderBase.hxx.

100{
102 << get_fcr_name() << ": Entering do_scrap() method";
103
104 for (auto& [name, emu] : m_source_emus) {
105 emu->scrap(args);
106 }
107
108 m_configured = false;
109
111 << get_fcr_name() << ": Exiting do_scrap() method";
112}

◆ do_start()

void dunedaq::snbmodules::FileReaderBase::do_start ( const appfwk::DAQModule::CommandData_t & args)

Definition at line 114 of file FileReaderBase.hxx.

115{
117 << get_fcr_name() << ": Entering do_start() method";
118
119 m_run_marker.store(true);
120
121 for (auto& [name, emu] : m_source_emus) {
122 emu->start(args);
123 }
124
126 << get_fcr_name() << ": Exiting do_start() method";
127}

◆ do_stop()

void dunedaq::snbmodules::FileReaderBase::do_stop ( const appfwk::DAQModule::CommandData_t & args)

Definition at line 130 of file FileReaderBase.hxx.

131{
133 << get_fcr_name() << ": Entering do_stop() method";
134
135 m_run_marker = false;
136
137 for (auto& [name, emu] : m_source_emus) {
138 emu->stop(args);
139 }
140
142 << get_fcr_name() << ": Exiting do_stop() method";
143}

◆ get_fcr_name()

std::string dunedaq::snbmodules::FileReaderBase::get_fcr_name ( )
inline

Definition at line 72 of file FileReaderBase.hpp.

72{ return m_name; }

◆ init()

void dunedaq::snbmodules::FileReaderBase::init ( std::shared_ptr< appfwk::ConfigurationManager > cfg)

Definition at line 16 of file FileReaderBase.hxx.

17{
18 m_cfg = cfg;
20 << get_fcr_name() << ": Entering init() method";
21 // auto ini = args.get<appfwk::app::ModInit>();
22 auto ini = cfg->get_dal<appmodel::DataReaderModule>(m_name);
23 if (ini != nullptr && ini->get_configuration()->get_emulation_mode()) {
24
25 for (auto qi : ini->get_outputs()) {
26
27 try {
28 if (m_source_emus.find(qi->UID()) != m_source_emus.end()) {
29 TLOG() << get_fcr_name() << "Same queue instance used twice";
30 throw datahandlinglibs::FailedFakeCardInitialization(ERS_HERE, get_fcr_name(), "");
31 }
32 m_source_emus[qi->UID()] = create_source_emulator(qi->UID(), m_run_marker);
33 if (m_source_emus[qi->UID()].get() == nullptr) {
34 TLOG() << get_fcr_name() << "Source emulator could not be created";
35 throw datahandlinglibs::FailedFakeCardInitialization(ERS_HERE, get_fcr_name(), "");
36 }
37 // m_source_emus[qi->UID()]->init(cfg);
38 m_source_emus[qi->UID()]->set_sender(qi->UID());
39 } catch (const ers::Issue& excpt) {
40 throw datahandlinglibs::ResourceQueueError(ERS_HERE, qi->UID(), get_fcr_name(), excpt);
41 }
42 }
43 }
45 << get_fcr_name() << ": Exiting init() method";
46}
virtual std::shared_ptr< snbmodules::FileSourceConcept > create_source_emulator(std::string qi, std::atomic< bool > &run_marker)=0
Base class for any user define issue.
Definition Issue.hpp:69

◆ operator=() [1/2]

FileReaderBase & dunedaq::snbmodules::FileReaderBase::operator= ( const FileReaderBase & )
delete

FileReaderBase is not copy-assignable.

◆ operator=() [2/2]

FileReaderBase & dunedaq::snbmodules::FileReaderBase::operator= ( FileReaderBase && )
delete

FileReaderBase is not move-assignable.

Member Data Documentation

◆ m_cfg

std::shared_ptr<appfwk::ConfigurationManager> dunedaq::snbmodules::FileReaderBase::m_cfg
private

Definition at line 78 of file FileReaderBase.hpp.

◆ m_configured

bool dunedaq::snbmodules::FileReaderBase::m_configured
private

Definition at line 76 of file FileReaderBase.hpp.

◆ m_name

std::string dunedaq::snbmodules::FileReaderBase::m_name
private

Definition at line 77 of file FileReaderBase.hpp.

◆ m_run_marker

std::atomic<bool> dunedaq::snbmodules::FileReaderBase::m_run_marker
private

Definition at line 83 of file FileReaderBase.hpp.

◆ m_source_emus

std::map<std::string, std::shared_ptr<snbmodules::FileSourceConcept> > dunedaq::snbmodules::FileReaderBase::m_source_emus
private

Definition at line 80 of file FileReaderBase.hpp.


The documentation for this class was generated from the following files: