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 "
datahandlinglibs/DataHandlingIssues.hpp
"
3
#include "
datahandlinglibs/ReadoutLogging.hpp
"
4
#include "
appmodel/DataMoveCallbackConf.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()],
78
cfg->get_configuration()->get_snb_conf());
79
}
80
for
(
auto
& [name, emu] :
m_source_emus
) {
81
if
(!emu->is_configured()) {
82
throw
datahandlinglibs::GenericConfigurationError(
ERS_HERE
,
"Not all links were configured"
);
83
}
84
}
85
86
// Mark configured
87
m_configured
=
true
;
88
}
89
90
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
91
<<
get_fcr_name
() <<
": Exiting do_conf() method"
;
92
}
93
94
void
95
FileReaderBase::do_scrap
(
const
appfwk::DAQModule::CommandData_t& args)
96
{
97
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
98
<<
get_fcr_name
() <<
": Entering do_scrap() method"
;
99
100
for
(
auto
& [name, emu] :
m_source_emus
) {
101
emu->scrap(args);
102
}
103
104
m_configured
=
false
;
105
106
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
107
<<
get_fcr_name
() <<
": Exiting do_scrap() method"
;
108
}
109
void
110
FileReaderBase::do_start
(
const
appfwk::DAQModule::CommandData_t& args)
111
{
112
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
113
<<
get_fcr_name
() <<
": Entering do_start() method"
;
114
115
m_run_marker
.store(
true
);
116
117
for
(
auto
& [name, emu] :
m_source_emus
) {
118
emu->start(args);
119
}
120
121
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
122
<<
get_fcr_name
() <<
": Exiting do_start() method"
;
123
}
124
125
void
126
FileReaderBase::do_stop
(
const
appfwk::DAQModule::CommandData_t& args)
127
{
128
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
129
<<
get_fcr_name
() <<
": Entering do_stop() method"
;
130
131
m_run_marker
=
false
;
132
133
for
(
auto
& [name, emu] :
m_source_emus
) {
134
emu->stop(args);
135
}
136
137
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
138
<<
get_fcr_name
() <<
": Exiting do_stop() method"
;
139
}
140
141
}
// namespace snbmodules
142
}
// namespace dunedaq
DataHandlingIssues.hpp
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:141
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:95
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:84
dunedaq::snbmodules::FileReaderBase::m_configured
bool m_configured
Definition
FileReaderBase.hpp:77
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:126
dunedaq::snbmodules::FileReaderBase::m_name
std::string m_name
Definition
FileReaderBase.hpp:78
dunedaq::snbmodules::FileReaderBase::m_cfg
std::shared_ptr< appfwk::ConfigurationManager > m_cfg
Definition
FileReaderBase.hpp:79
dunedaq::snbmodules::FileReaderBase::get_fcr_name
std::string get_fcr_name()
Definition
FileReaderBase.hpp:73
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:81
dunedaq::snbmodules::FileReaderBase::do_start
void do_start(const appfwk::DAQModule::CommandData_t &)
Definition
FileReaderBase.hxx:110
ers::Issue
Base class for any user define issue.
Definition
Issue.hpp:80
DataMoveCallbackConf.hpp
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:112
TLOG
#define TLOG(...)
Definition
macro.hpp:22
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
Including Qt Headers.
Definition
module.cpp:16
Generated on
for DUNE-DAQ by
1.17.0