DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
datahandlinglibs
include
datahandlinglibs
models
RecorderModel.hpp
Go to the documentation of this file.
1
8
#ifndef DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_MODELS_RECORDERMODEL_HPP_
9
#define DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_MODELS_RECORDERMODEL_HPP_
10
11
#include "
datahandlinglibs/ReadoutTypes.hpp
"
12
#include "
datahandlinglibs/concepts/RecorderConcept.hpp
"
13
#include "
datahandlinglibs/utils/BufferedFileWriter.hpp
"
14
#include "
iomanager/IOManager.hpp
"
15
#include "
iomanager/Receiver.hpp
"
16
#include "
utilities/ReusableThread.hpp
"
17
#include "
utilities/WorkerThread.hpp
"
18
19
#include "
datahandlinglibs/opmon/datahandling_info.pb.h
"
20
21
#include "
appmodel/DataRecorderConf.hpp
"
22
#include "
appmodel/DataRecorderModule.hpp
"
23
#include "
confmodel/Connection.hpp
"
24
#include "
confmodel/DaqModule.hpp
"
25
#include <atomic>
26
#include <fstream>
27
#include <iostream>
28
#include <memory>
29
#include <string>
30
31
namespace
dunedaq
{
32
namespace
datahandlinglibs
{
33
34
template
<
class
ReadoutType>
35
class
RecorderModel
:
public
RecorderConcept
36
{
37
public
:
38
explicit
RecorderModel
(std::string name)
39
:
m_work_thread
(0)
40
,
m_name
(name)
41
{
42
}
43
44
void
init
(
const
appmodel::DataRecorderModule
* conf)
override
;
45
// void get_info(opmonlib::InfoCollector& ci, int /* level */) override;
46
void
do_conf
(
const
appfwk::DAQModule::CommandData_t&
/*args*/
)
override
;
47
void
do_scrap
(
const
appfwk::DAQModule::CommandData_t&
/*args*/
)
override
{
m_buffered_writer
.
close
(); }
48
void
do_start
(
const
appfwk::DAQModule::CommandData_t&
/* args */
)
override
;
49
void
do_stop
(
const
appfwk::DAQModule::CommandData_t&
/* args */
)
override
;
50
51
protected
:
52
virtual
void
generate_opmon_data
()
override
;
53
54
private
:
55
// The work that the worker thread does
56
void
do_work
();
57
58
// Queue
59
using
source_t
=
dunedaq::iomanager::ReceiverConcept<ReadoutType>
;
60
std::shared_ptr<source_t>
m_data_receiver
;
61
62
// Internal
63
// recorderconfig::Conf m_conf;
64
std::string
m_output_file
;
65
size_t
m_stream_buffer_size
= 0;
66
std::string
m_compression_algorithm
;
67
bool
m_use_o_direct
;
68
69
BufferedFileWriter<>
m_buffered_writer
;
70
71
// Threading
72
utilities::ReusableThread
m_work_thread
;
73
std::atomic<bool>
m_run_marker
;
74
75
// Stats
76
std::atomic<int>
m_bytes_processed
{ 0 };
77
std::atomic<int>
m_packets_processed
{ 0 };
78
std::chrono::steady_clock::time_point
m_time_point_last_info
;
79
80
std::string
m_name
;
81
};
82
83
}
// namespace datahandlinglibs
84
}
// namespace dunedaq
85
86
// Declarations
87
#include "
detail/RecorderModel.hxx
"
88
89
#endif
// DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_MODELS_RECORDERMODEL_HPP_
BufferedFileWriter.hpp
IOManager.hpp
ReadoutTypes.hpp
RecorderConcept.hpp
RecorderModel.hxx
ReusableThread.hpp
WorkerThread.hpp
dunedaq::appmodel::DataRecorderModule
Definition
DataRecorderModule.hpp:32
dunedaq::datahandlinglibs::BufferedFileWriter
Definition
BufferedFileWriter.hpp:48
dunedaq::datahandlinglibs::BufferedFileWriter::close
void close()
Definition
BufferedFileWriter.hpp:172
dunedaq::datahandlinglibs::RecorderConcept::RecorderConcept
RecorderConcept()
Definition
RecorderConcept.hpp:32
dunedaq::datahandlinglibs::RecorderModel::m_bytes_processed
std::atomic< int > m_bytes_processed
Definition
RecorderModel.hpp:76
dunedaq::datahandlinglibs::RecorderModel::m_output_file
std::string m_output_file
Definition
RecorderModel.hpp:64
dunedaq::datahandlinglibs::RecorderModel::m_buffered_writer
BufferedFileWriter m_buffered_writer
Definition
RecorderModel.hpp:69
dunedaq::datahandlinglibs::RecorderModel::RecorderModel
RecorderModel(std::string name)
Definition
RecorderModel.hpp:38
dunedaq::datahandlinglibs::RecorderModel::m_compression_algorithm
std::string m_compression_algorithm
Definition
RecorderModel.hpp:66
dunedaq::datahandlinglibs::RecorderModel::do_work
void do_work()
Definition
RecorderModel.hxx:69
dunedaq::datahandlinglibs::RecorderModel::do_start
void do_start(const appfwk::DAQModule::CommandData_t &) override
Definition
RecorderModel.hxx:48
dunedaq::datahandlinglibs::RecorderModel::m_run_marker
std::atomic< bool > m_run_marker
Definition
RecorderModel.hpp:73
dunedaq::datahandlinglibs::RecorderModel::m_data_receiver
std::shared_ptr< source_t > m_data_receiver
Definition
RecorderModel.hpp:60
dunedaq::datahandlinglibs::RecorderModel::m_packets_processed
std::atomic< int > m_packets_processed
Definition
RecorderModel.hpp:77
dunedaq::datahandlinglibs::RecorderModel::generate_opmon_data
virtual void generate_opmon_data() override
Definition
RecorderModel.hxx:25
dunedaq::datahandlinglibs::RecorderModel::source_t
dunedaq::iomanager::ReceiverConcept< ReadoutType > source_t
Definition
RecorderModel.hpp:59
dunedaq::datahandlinglibs::RecorderModel::m_use_o_direct
bool m_use_o_direct
Definition
RecorderModel.hpp:67
dunedaq::datahandlinglibs::RecorderModel::do_stop
void do_stop(const appfwk::DAQModule::CommandData_t &) override
Definition
RecorderModel.hxx:59
dunedaq::datahandlinglibs::RecorderModel::m_stream_buffer_size
size_t m_stream_buffer_size
Definition
RecorderModel.hpp:65
dunedaq::datahandlinglibs::RecorderModel::m_name
std::string m_name
Definition
RecorderModel.hpp:80
dunedaq::datahandlinglibs::RecorderModel::do_scrap
void do_scrap(const appfwk::DAQModule::CommandData_t &) override
Definition
RecorderModel.hpp:47
dunedaq::datahandlinglibs::RecorderModel::do_conf
void do_conf(const appfwk::DAQModule::CommandData_t &) override
Definition
RecorderModel.hxx:35
dunedaq::datahandlinglibs::RecorderModel::m_time_point_last_info
std::chrono::steady_clock::time_point m_time_point_last_info
Definition
RecorderModel.hpp:78
dunedaq::datahandlinglibs::RecorderModel::m_work_thread
utilities::ReusableThread m_work_thread
Definition
RecorderModel.hpp:72
dunedaq::iomanager::ReceiverConcept
Definition
Receiver.hpp:48
dunedaq::utilities::ReusableThread
Definition
ReusableThread.hpp:25
init
void init(unordered_map< std::string, std::string > params)
Definition
conversions-impl.hh:30
datahandling_info.pb.h
DataRecorderConf.hpp
DataRecorderModule.hpp
Connection.hpp
DaqModule.hpp
Receiver.hpp
dunedaq::datahandlinglibs
Definition
DataHandlingConcept.hpp:16
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
Generated on
for DUNE-DAQ by
1.18.0