DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
snbmodules
include
snbmodules
readout
FileSourceModel.hpp
Go to the documentation of this file.
1
8
#ifndef snbmodules_INCLUDE_snbmodules_MODELS_FileSourceModel_HPP_
9
#define snbmodules_INCLUDE_snbmodules_MODELS_FileSourceModel_HPP_
10
11
#include "
iomanager/IOManager.hpp
"
12
#include "
iomanager/Sender.hpp
"
13
14
#include "
logging/Logging.hpp
"
15
16
#include "
confmodel/DetectorStream.hpp
"
17
#include "
confmodel/GeoId.hpp
"
18
19
#include "
datahandlinglibs/DataHandlingIssues.hpp
"
20
#include "
datahandlinglibs/utils/BufferedFileReader.hpp
"
21
#include "
datahandlinglibs/utils/RateLimiter.hpp
"
22
#include "
snbmodules/readout/FileSourceConcept.hpp
"
23
#include "
appmodel/DataMoveCallbackConf.hpp
"
24
#include "
utilities/ReusableThread.hpp
"
25
26
#include "
datahandlinglibs/opmon/datahandling_info.pb.h
"
27
28
#include "unistd.h"
29
#include <chrono>
30
#include <functional>
31
#include <memory>
32
#include <random>
33
#include <string>
34
#include <utility>
35
#include <vector>
36
37
using
dunedaq::datahandlinglibs::logging::TLVL_TAKE_NOTE
;
38
using
dunedaq::datahandlinglibs::logging::TLVL_WORK_STEPS
;
39
40
namespace
dunedaq
{
41
namespace
snbmodules
{
42
43
template
<
class
ReadoutType>
44
class
FileSourceModel
:
public
FileSourceConcept
45
{
46
public
:
47
explicit
FileSourceModel
(std::string name, std::atomic<bool>&
run_marker
,
double
rate_khz)
48
:
m_run_marker
(
run_marker
)
49
,
m_name
(name)
50
,
m_rate_khz
(rate_khz)
51
,
m_packet_count
{ 0 }
52
,
m_raw_sender_timeout_ms
(0)
53
,
m_producer_thread
(0)
54
{
55
}
56
57
// void init(const appfwk::DAQModule::CommandData_t& /*args*/) {}
58
void
set_sender
(
const
appmodel::DataMoveCallbackConf
* sink);
59
60
void
conf
(
const
confmodel::DetectorStream
* stream_conf,
const
appmodel::SNBFileSourceParameters
* file_params);
61
void
scrap
(
const
appfwk::DAQModule::CommandData_t&
/*args*/
)
62
{
63
if
(
m_file_reader
!=
nullptr
) {
64
m_file_reader
->close();
65
}
66
m_file_reader
.reset();
67
m_is_configured
=
false
;
68
}
69
bool
is_configured
()
override
{
return
m_is_configured
; }
70
71
void
start
(
const
appfwk::DAQModule::CommandData_t&
/*args*/
);
72
void
stop
(
const
appfwk::DAQModule::CommandData_t&
/*args*/
);
73
// void get_info(opmonlib::InfoCollector& ci, int /*level*/);
74
75
protected
:
76
// The data emulator function that the worker thread runs
77
void
run_produce
();
78
virtual
void
generate_opmon_data
()
override
;
79
80
void
open_next_file
();
81
82
private
:
83
// Constuctor params
84
std::atomic<bool>&
m_run_marker
;
85
86
// CONFIGURATION
87
std::string
m_name
;
88
bool
m_is_configured
=
false
;
89
double
m_rate_khz
;
90
91
std::vector<std::string>
m_file_names
;
92
std::vector<std::string>::const_iterator
m_file_iterator
;
93
uint32_t
m_input_buffer_size
;
94
std::string
m_compression_algorithm
;
95
96
daqdataformats::SourceID
m_sourceid
;
97
98
// STATS
99
std::atomic<int>
m_packet_count
{ 0 };
100
std::atomic<int>
m_packet_count_tot
{ 0 };
101
102
// sourceemulatorconfig::Conf m_cfg;
103
104
// RAW SENDER
105
std::chrono::milliseconds
m_raw_sender_timeout_ms
;
106
const
appmodel::DataMoveCallbackConf
*
m_raw_sender_conf
{
nullptr
};
107
std::shared_ptr<std::function<void(ReadoutType&&)>>
m_raw_data_callback
{
nullptr
};
108
// using module_conf_t = dunedaq::snbmodules::sourceemulatorconfig::Conf;
109
// module_conf_t m_conf;
110
// using link_conf_t = dunedaq::snbmodules::sourceemulatorconfig::LinkConfiguration;
111
// link_conf_t m_link_conf;
112
113
std::unique_ptr<dunedaq::datahandlinglibs::RateLimiter>
m_rate_limiter
;
114
std::unique_ptr<dunedaq::datahandlinglibs::BufferedFileReader<ReadoutType>>
m_file_reader
;
115
116
utilities::ReusableThread
m_producer_thread
;
117
};
118
119
}
// namespace snbmodules
120
}
// namespace dunedaq
121
122
// Declarations
123
#include "
detail/FileSourceModel.hxx
"
124
125
#endif
// snbmodules_INCLUDE_snbmodules_MODELS_FileSourceModel_HPP_
BufferedFileReader.hpp
DataHandlingIssues.hpp
FileSourceConcept.hpp
FileSourceModel.hxx
IOManager.hpp
RateLimiter.hpp
ReusableThread.hpp
dunedaq::appmodel::DataMoveCallbackConf
Definition
DataMoveCallbackConf.hpp:20
dunedaq::appmodel::SNBFileSourceParameters
Definition
SNBFileSourceParameters.hpp:20
dunedaq::confmodel::DetectorStream
Definition
DetectorStream.hpp:32
dunedaq::snbmodules::FileSourceConcept::FileSourceConcept
FileSourceConcept()
Definition
FileSourceConcept.hpp:28
dunedaq::snbmodules::FileSourceModel::m_sourceid
daqdataformats::SourceID m_sourceid
Definition
FileSourceModel.hpp:96
dunedaq::snbmodules::FileSourceModel::stop
void stop(const appfwk::DAQModule::CommandData_t &)
Definition
FileSourceModel.hxx:89
dunedaq::snbmodules::FileSourceModel::FileSourceModel
FileSourceModel(std::string name, std::atomic< bool > &run_marker, double rate_khz)
Definition
FileSourceModel.hpp:47
dunedaq::snbmodules::FileSourceModel::m_rate_limiter
std::unique_ptr< dunedaq::datahandlinglibs::RateLimiter > m_rate_limiter
Definition
FileSourceModel.hpp:113
dunedaq::snbmodules::FileSourceModel::m_raw_sender_timeout_ms
std::chrono::milliseconds m_raw_sender_timeout_ms
Definition
FileSourceModel.hpp:105
dunedaq::snbmodules::FileSourceModel::open_next_file
void open_next_file()
Definition
FileSourceModel.hxx:54
dunedaq::snbmodules::FileSourceModel::m_packet_count
std::atomic< int > m_packet_count
Definition
FileSourceModel.hpp:99
dunedaq::snbmodules::FileSourceModel::generate_opmon_data
virtual void generate_opmon_data() override
Definition
FileSourceModel.hxx:98
dunedaq::snbmodules::FileSourceModel::conf
void conf(const confmodel::DetectorStream *stream_conf, const appmodel::SNBFileSourceParameters *file_params)
Definition
FileSourceModel.hxx:25
dunedaq::snbmodules::FileSourceModel::m_packet_count_tot
std::atomic< int > m_packet_count_tot
Definition
FileSourceModel.hpp:100
dunedaq::snbmodules::FileSourceModel::m_rate_khz
double m_rate_khz
Definition
FileSourceModel.hpp:89
dunedaq::snbmodules::FileSourceModel::m_file_reader
std::unique_ptr< dunedaq::datahandlinglibs::BufferedFileReader< ReadoutType > > m_file_reader
Definition
FileSourceModel.hpp:114
dunedaq::snbmodules::FileSourceModel::m_producer_thread
utilities::ReusableThread m_producer_thread
Definition
FileSourceModel.hpp:116
dunedaq::snbmodules::FileSourceModel::scrap
void scrap(const appfwk::DAQModule::CommandData_t &)
Definition
FileSourceModel.hpp:61
dunedaq::snbmodules::FileSourceModel::m_run_marker
std::atomic< bool > & m_run_marker
Definition
FileSourceModel.hpp:84
dunedaq::snbmodules::FileSourceModel::m_input_buffer_size
uint32_t m_input_buffer_size
Definition
FileSourceModel.hpp:93
dunedaq::snbmodules::FileSourceModel::run_produce
void run_produce()
Definition
FileSourceModel.hxx:109
dunedaq::snbmodules::FileSourceModel::set_sender
void set_sender(const appmodel::DataMoveCallbackConf *sink)
Definition
FileSourceModel.hxx:18
dunedaq::snbmodules::FileSourceModel::m_file_names
std::vector< std::string > m_file_names
Definition
FileSourceModel.hpp:91
dunedaq::snbmodules::FileSourceModel::m_raw_data_callback
std::shared_ptr< std::function< void(ReadoutType &&)> > m_raw_data_callback
Definition
FileSourceModel.hpp:107
dunedaq::snbmodules::FileSourceModel::is_configured
bool is_configured() override
Definition
FileSourceModel.hpp:69
dunedaq::snbmodules::FileSourceModel::m_is_configured
bool m_is_configured
Definition
FileSourceModel.hpp:88
dunedaq::snbmodules::FileSourceModel::m_name
std::string m_name
Definition
FileSourceModel.hpp:87
dunedaq::snbmodules::FileSourceModel::m_file_iterator
std::vector< std::string >::const_iterator m_file_iterator
Definition
FileSourceModel.hpp:92
dunedaq::snbmodules::FileSourceModel::m_raw_sender_conf
const appmodel::DataMoveCallbackConf * m_raw_sender_conf
Definition
FileSourceModel.hpp:106
dunedaq::snbmodules::FileSourceModel::m_compression_algorithm
std::string m_compression_algorithm
Definition
FileSourceModel.hpp:94
dunedaq::snbmodules::FileSourceModel::start
void start(const appfwk::DAQModule::CommandData_t &)
Definition
FileSourceModel.hxx:76
dunedaq::utilities::ReusableThread
Definition
ReusableThread.hpp:25
run_marker
std::atomic< bool > run_marker
Global atomic for process lifetime.
Definition
daq_application.cxx:26
datahandling_info.pb.h
DataMoveCallbackConf.hpp
DetectorStream.hpp
GeoId.hpp
Sender.hpp
Logging.hpp
dunedaq::datahandlinglibs::logging::TLVL_TAKE_NOTE
@ TLVL_TAKE_NOTE
Definition
ReadoutLogging.hpp:21
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
dunedaq::daqdataformats::SourceID
SourceID is a generalized representation of the source of a piece of data in the DAQ....
Definition
SourceID.hpp:32
Generated on
for DUNE-DAQ by
1.17.0