DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::datahandlinglibs::RecorderModel< ReadoutType > Class Template Reference

#include <RecorderModel.hpp>

Inheritance diagram for dunedaq::datahandlinglibs::RecorderModel< ReadoutType >:
[legend]
Collaboration diagram for dunedaq::datahandlinglibs::RecorderModel< ReadoutType >:
[legend]

Public Member Functions

 RecorderModel (std::string name)
void init (const appmodel::DataRecorderModule *conf) override
void do_conf (const appfwk::DAQModule::CommandData_t &) override
void do_scrap (const appfwk::DAQModule::CommandData_t &) override
void do_start (const appfwk::DAQModule::CommandData_t &) override
void do_stop (const appfwk::DAQModule::CommandData_t &) override
Public Member Functions inherited from dunedaq::datahandlinglibs::RecorderConcept
 RecorderConcept ()
virtual ~RecorderConcept ()
 RecorderConcept (const RecorderConcept &)=delete
RecorderConceptoperator= (const RecorderConcept &)=delete
 RecorderConcept (RecorderConcept &&)=delete
RecorderConceptoperator= (RecorderConcept &&)=delete

Protected Member Functions

virtual void generate_opmon_data () override

Private Types

using source_t = dunedaq::iomanager::ReceiverConcept<ReadoutType>

Private Member Functions

void do_work ()

Private Attributes

std::shared_ptr< source_tm_data_receiver
std::string m_output_file
size_t m_stream_buffer_size = 0
std::string m_compression_algorithm
bool m_use_o_direct
BufferedFileWriter m_buffered_writer
utilities::ReusableThread m_work_thread
std::atomic< boolm_run_marker
std::atomic< int > m_bytes_processed { 0 }
std::atomic< int > m_packets_processed { 0 }
std::chrono::steady_clock::time_point m_time_point_last_info
std::string m_name

Detailed Description

template<class ReadoutType>
class dunedaq::datahandlinglibs::RecorderModel< ReadoutType >

Definition at line 35 of file RecorderModel.hpp.

Member Typedef Documentation

◆ source_t

template<class ReadoutType>
using dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::source_t = dunedaq::iomanager::ReceiverConcept<ReadoutType>
private

Definition at line 58 of file RecorderModel.hpp.

Constructor & Destructor Documentation

◆ RecorderModel()

template<class ReadoutType>
dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::RecorderModel ( std::string name)
inlineexplicit

Member Function Documentation

◆ do_conf()

template<class ReadoutType>
void dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::do_conf ( const appfwk::DAQModule::CommandData_t & )
overridevirtual

Implements dunedaq::datahandlinglibs::RecorderConcept.

Definition at line 35 of file RecorderModel.hxx.

36{
37
38 if (remove(m_output_file.c_str()) == 0) {
39 TLOG(TLVL_WORK_STEPS) << "Removed existing output file from previous run" << std::endl;
40 }
41
44 m_work_thread.set_name(m_name, 0);
45}
#define TLOG(...)
Definition macro.hpp:22

◆ do_scrap()

template<class ReadoutType>
void dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::do_scrap ( const appfwk::DAQModule::CommandData_t & )
inlineoverridevirtual

Implements dunedaq::datahandlinglibs::RecorderConcept.

Definition at line 46 of file RecorderModel.hpp.

46{ m_buffered_writer.close(); }

◆ do_start()

template<class ReadoutType>
void dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::do_start ( const appfwk::DAQModule::CommandData_t & )
overridevirtual

◆ do_stop()

template<class ReadoutType>
void dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::do_stop ( const appfwk::DAQModule::CommandData_t & )
overridevirtual

Implements dunedaq::datahandlinglibs::RecorderConcept.

Definition at line 60 of file RecorderModel.hxx.

61{
62 m_run_marker.store(false);
63 while (!m_work_thread.get_readiness()) {
65 }
66}

◆ do_work()

template<class ReadoutType>
void dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::do_work ( )
private

Definition at line 70 of file RecorderModel.hxx.

71{
73
75 while (m_run_marker) {
76 try {
77 element = m_data_receiver->receive(std::chrono::milliseconds(100)); // RS -> Use confed timeout?
78 if (!m_buffered_writer.write(reinterpret_cast<char*>(&element), sizeof(element))) { // NOLINT
80 break;
81 }
85 continue;
86 }
87 }
88 m_buffered_writer.flush();
89}
std::shared_ptr< source_t > m_data_receiver
std::chrono::steady_clock::time_point m_time_point_last_info
void warning(const Issue &issue)
Definition ers.hpp:115

◆ generate_opmon_data()

template<class ReadoutType>
void dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::generate_opmon_data ( )
overrideprotectedvirtual

Definition at line 25 of file RecorderModel.hxx.

26{
28 info.set_recording_status("Y");
29 info.set_packets_recorded(m_packets_processed.exchange(0));
30 info.set_bytes_recorded(m_bytes_processed.exchange(0));
31}

◆ init()

template<class ReadoutType>
void dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::init ( const appmodel::DataRecorderModule * conf)
overridevirtual

Implements dunedaq::datahandlinglibs::RecorderConcept.

Definition at line 8 of file RecorderModel.hxx.

9{
10 for (auto input : conf->get_inputs()) {
11 try {
13 } catch (const ers::Issue& excpt) {
14 throw ResourceQueueError(ERS_HERE, "raw_recording", "RecorderModel");
15 }
16 }
17 m_output_file = conf->get_configuration()->get_output_file();
18 m_stream_buffer_size = conf->get_configuration()->get_streaming_buffer_size();
19 m_compression_algorithm = conf->get_configuration()->get_compression_algorithm();
20 m_use_o_direct = conf->get_configuration()->get_use_o_direct();
21}
static std::shared_ptr< iomanager::ReceiverConcept< Datatype > > get_iom_receiver(iomanager::ConnectionId const &id)

Member Data Documentation

◆ m_buffered_writer

template<class ReadoutType>
BufferedFileWriter dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_buffered_writer
private

Definition at line 68 of file RecorderModel.hpp.

◆ m_bytes_processed

template<class ReadoutType>
std::atomic<int> dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_bytes_processed { 0 }
private

Definition at line 75 of file RecorderModel.hpp.

75{ 0 };

◆ m_compression_algorithm

template<class ReadoutType>
std::string dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_compression_algorithm
private

Definition at line 65 of file RecorderModel.hpp.

◆ m_data_receiver

template<class ReadoutType>
std::shared_ptr<source_t> dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_data_receiver
private

Definition at line 59 of file RecorderModel.hpp.

◆ m_name

template<class ReadoutType>
std::string dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_name
private

Definition at line 79 of file RecorderModel.hpp.

◆ m_output_file

template<class ReadoutType>
std::string dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_output_file
private

Definition at line 63 of file RecorderModel.hpp.

◆ m_packets_processed

template<class ReadoutType>
std::atomic<int> dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_packets_processed { 0 }
private

Definition at line 76 of file RecorderModel.hpp.

76{ 0 };

◆ m_run_marker

template<class ReadoutType>
std::atomic<bool> dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_run_marker
private

Definition at line 72 of file RecorderModel.hpp.

◆ m_stream_buffer_size

template<class ReadoutType>
size_t dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_stream_buffer_size = 0
private

Definition at line 64 of file RecorderModel.hpp.

◆ m_time_point_last_info

template<class ReadoutType>
std::chrono::steady_clock::time_point dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_time_point_last_info
private

Definition at line 77 of file RecorderModel.hpp.

◆ m_use_o_direct

template<class ReadoutType>
bool dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_use_o_direct
private

Definition at line 66 of file RecorderModel.hpp.

◆ m_work_thread

template<class ReadoutType>
utilities::ReusableThread dunedaq::datahandlinglibs::RecorderModel< ReadoutType >::m_work_thread
private

Definition at line 71 of file RecorderModel.hpp.


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