DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
snbmodules
include
snbmodules
readout
detail
FileReaderBase.hxx
Go to the documentation of this file.
1
2
#include "
appmodel/DataMoveCallbackConf.hpp
"
3
#include "
datahandlinglibs/DataHandlingIssues.hpp
"
4
#include "
datahandlinglibs/ReadoutLogging.hpp
"
5
6
namespace
dunedaq
{
7
namespace
snbmodules
{
8
9
FileReaderBase::FileReaderBase
(
const
std::string& name)
10
:
m_configured
(false)
11
,
m_name
(name)
12
,
m_run_marker
{ false }
13
{
14
}
15
16
void
17
FileReaderBase::init
(std::shared_ptr<appfwk::ConfigurationManager> cfg)
18
{
19
m_cfg
= cfg;
20
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
21
<<
get_fcr_name
() <<
": Entering init() method"
;
22
// auto ini = args.get<appfwk::app::ModInit>();
23
auto
ini = cfg->get_dal<
appmodel::DataReaderModule
>(
m_name
);
24
if
(ini !=
nullptr
&& ini->get_configuration()->get_emulation_mode()) {
25
26
for
(
auto
cb : ini->get_raw_data_callbacks()) {
27
28
try
{
29
if
(
m_source_emus
.find(cb->UID()) !=
m_source_emus
.end()) {
30
TLOG
() <<
get_fcr_name
() <<
"Same queue instance used twice"
;
31
throw
datahandlinglibs::FailedFakeCardInitialization(
ERS_HERE
,
get_fcr_name
(),
""
);
32
}
33
m_source_emus
[cb->UID()] =
create_source_emulator
(cb,
m_run_marker
);
34
if
(
m_source_emus
[cb->UID()].get() ==
nullptr
) {
35
TLOG
() <<
get_fcr_name
() <<
"Source emulator could not be created"
;
36
throw
datahandlinglibs::FailedFakeCardInitialization(
ERS_HERE
,
get_fcr_name
(),
""
);
37
}
38
// m_source_emus[qi->UID()]->init(cfg);
39
}
catch
(
const
ers::Issue
& excpt) {
40
throw
datahandlinglibs::ResourceQueueError(
ERS_HERE
, cb->UID(),
get_fcr_name
(), excpt);
41
}
42
}
43
}
44
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
45
<<
get_fcr_name
() <<
": Exiting init() method"
;
46
}
47
48
void
49
FileReaderBase::do_conf
(
const
appfwk::DAQModule::CommandData_t&
/*args*/
)
50
{
51
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
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
& cb : cfg->get_raw_data_callbacks()) {
68
if
(
m_source_emus
.find(cb->UID()) ==
m_source_emus
.end()) {
69
TLOG
() <<
"Cannot find queue: "
<< cb->UID() << std::endl;
70
throw
datahandlinglibs::GenericConfigurationError(
ERS_HERE
,
"Cannot find queue: "
+ cb->UID());
71
}
72
if
(
m_source_emus
[cb->UID()]->is_configured()) {
73
TLOG
() <<
"Emulator for queue name "
<< cb->UID() <<
" was already configured"
;
74
throw
datahandlinglibs::GenericConfigurationError(
ERS_HERE
,
"Emulator configured twice: "
+ cb->UID());
75
}
76
m_source_emus
[cb->UID()]->set_sender(cb);
77
m_source_emus
[cb->UID()]->conf(streams[cb->get_source_id()], cfg->get_configuration()->get_snb_conf());
78
}
79
for
(
auto
& [name, emu] :
m_source_emus
) {
80
if
(!emu->is_configured()) {
81
throw
datahandlinglibs::GenericConfigurationError(
ERS_HERE
,
"Not all links were configured"
);
82
}
83
}
84
85
// Mark configured
86
m_configured
=
true
;
87
}
88
89
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
90
<<
get_fcr_name
() <<
": Exiting do_conf() method"
;
91
}
92
93
void
94
FileReaderBase::do_scrap
(
const
appfwk::DAQModule::CommandData_t& args)
95
{
96
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
97
<<
get_fcr_name
() <<
": Entering do_scrap() method"
;
98
99
for
(
auto
& [name, emu] :
m_source_emus
) {
100
emu->scrap(args);
101
}
102
103
m_configured
=
false
;
104
105
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
106
<<
get_fcr_name
() <<
": Exiting do_scrap() method"
;
107
}
108
void
109
FileReaderBase::do_start
(
const
appfwk::DAQModule::CommandData_t& args)
110
{
111
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
112
<<
get_fcr_name
() <<
": Entering do_start() method"
;
113
114
m_run_marker
.store(
true
);
115
116
for
(
auto
& [name, emu] :
m_source_emus
) {
117
emu->start(args);
118
}
119
120
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
121
<<
get_fcr_name
() <<
": Exiting do_start() method"
;
122
}
123
124
void
125
FileReaderBase::do_stop
(
const
appfwk::DAQModule::CommandData_t& args)
126
{
127
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
128
<<
get_fcr_name
() <<
": Entering do_stop() method"
;
129
130
m_run_marker
=
false
;
131
132
for
(
auto
& [name, emu] :
m_source_emus
) {
133
emu->stop(args);
134
}
135
136
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
137
<<
get_fcr_name
() <<
": Exiting do_stop() method"
;
138
}
139
140
}
// namespace snbmodules
141
}
// namespace dunedaq
DataHandlingIssues.hpp
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:127
ReadoutLogging.hpp
dunedaq::appmodel::DataReaderModule
Definition
DataReaderModule.hpp:36
dunedaq::snbmodules::FileReaderBase::do_scrap
void do_scrap(const appfwk::DAQModule::CommandData_t &)
Definition
FileReaderBase.hxx:94
dunedaq::snbmodules::FileReaderBase::init
void init(std::shared_ptr< appfwk::ConfigurationManager > cfg)
Definition
FileReaderBase.hxx:17
dunedaq::snbmodules::FileReaderBase::m_run_marker
std::atomic< bool > m_run_marker
Definition
FileReaderBase.hpp:85
dunedaq::snbmodules::FileReaderBase::m_configured
bool m_configured
Definition
FileReaderBase.hpp:78
dunedaq::snbmodules::FileReaderBase::create_source_emulator
virtual std::shared_ptr< snbmodules::FileSourceConcept > create_source_emulator(const appmodel::DataMoveCallbackConf *cb_conf, std::atomic< bool > &run_marker)=0
dunedaq::snbmodules::FileReaderBase::do_stop
void do_stop(const appfwk::DAQModule::CommandData_t &)
Definition
FileReaderBase.hxx:125
dunedaq::snbmodules::FileReaderBase::m_name
std::string m_name
Definition
FileReaderBase.hpp:79
dunedaq::snbmodules::FileReaderBase::m_cfg
std::shared_ptr< appfwk::ConfigurationManager > m_cfg
Definition
FileReaderBase.hpp:80
dunedaq::snbmodules::FileReaderBase::get_fcr_name
std::string get_fcr_name()
Definition
FileReaderBase.hpp:74
dunedaq::snbmodules::FileReaderBase::do_conf
void do_conf(const appfwk::DAQModule::CommandData_t &)
Definition
FileReaderBase.hxx:49
dunedaq::snbmodules::FileReaderBase::FileReaderBase
FileReaderBase(const std::string &name)
FileReaderBase Constructor.
Definition
FileReaderBase.hxx:9
dunedaq::snbmodules::FileReaderBase::m_source_emus
std::map< std::string, std::shared_ptr< snbmodules::FileSourceConcept > > m_source_emus
Definition
FileReaderBase.hpp:82
dunedaq::snbmodules::FileReaderBase::do_start
void do_start(const appfwk::DAQModule::CommandData_t &)
Definition
FileReaderBase.hxx:109
ers::Issue
Base class for any user define issue.
Definition
Issue.hpp:76
DataMoveCallbackConf.hpp
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:116
TLOG
#define TLOG(...)
Definition
macro.hpp:21
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
@ TLVL_ENTER_EXIT_METHODS
Definition
ReadoutLogging.hpp:22
dunedaq::datahandlinglibs::logging::TLVL_WORK_STEPS
@ TLVL_WORK_STEPS
Definition
ReadoutLogging.hpp:23
dunedaq::snbmodules
Definition
bookkeeper.hpp:30
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
Generated on
for DUNE-DAQ by
1.18.0