DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TriggerRecord.hpp
Go to the documentation of this file.
1
9#ifndef DAQDATAFORMATS_INCLUDE_DAQDATAFORMATS_TRIGGERRECORD_HPP_
10#define DAQDATAFORMATS_INCLUDE_DAQDATAFORMATS_TRIGGERRECORD_HPP_
11
15
16#include <memory>
17#include <utility>
18#include <vector>
19
21
27{
28public:
33 inline explicit TriggerRecord(std::vector<ComponentRequest> const& components);
34
39 inline explicit TriggerRecord(TriggerRecordHeader const& header);
40
41 virtual ~TriggerRecord() = default;
42
43 TriggerRecord(TriggerRecord const&) = delete;
47
52 const TriggerRecordHeader& get_header_ref() const { return m_header; }
58 void set_header(const TriggerRecordHeader& header) { m_header = header; }
64
69 const std::vector<std::unique_ptr<Fragment>>& get_fragments_ref() const { return m_fragments; }
70 std::vector<std::unique_ptr<Fragment>>& get_fragments_ref() { return m_fragments; }
75 void set_fragments(std::vector<std::unique_ptr<Fragment>>&& fragments) { m_fragments = std::move(fragments); }
80 void add_fragment(std::unique_ptr<Fragment>&& fragment) { m_fragments.emplace_back(std::move(fragment)); }
81
85 size_t get_total_size_bytes() const
86 {
87 size_t total_size = get_header_ref().get_total_size_bytes();
88
89 for (auto const& frag_ptr : m_fragments)
90 total_size += frag_ptr->get_size();
91
92 return total_size;
93 }
94
99 {
100 size_t total_size = 0;
101
102 for (auto const& frag_ptr : m_fragments)
103 total_size += frag_ptr->get_data_size();
104
105 return total_size;
106 }
107
108private:
110 std::vector<std::unique_ptr<Fragment>> m_fragments;
111};
112
113//-------
114
115TriggerRecord::TriggerRecord(std::vector<ComponentRequest> const& components)
116 : m_header(components)
117 , m_fragments()
118{}
119
121 : m_header(header)
122 , m_fragments()
123{}
124
125} // namespace dunedaq::daqdataformats
126
127#endif // DAQDATAFORMATS_INCLUDE_DAQDATAFORMATS_TRIGGERRECORD_HPP_
C++ representation of a TriggerRecordHeader, which wraps a flat array that is the TriggerRecordHeader...
size_t get_total_size_bytes() const
Get the total size of the TriggerRecordHeader.
TriggerRecordHeaderData get_header() const
Get a copy of the TriggerRecordHeaderData struct.
C++ Representation of a DUNE TriggerRecord, consisting of a TriggerRecordHeader object and a vector o...
TriggerRecordHeaderData get_header_data() const
Get a copy of the TriggerRecordHeaderData from the TriggerRecordHeader.
TriggerRecord & operator=(TriggerRecord &&)=default
Default TriggerRecord move assignment operator.
TriggerRecord(std::vector< ComponentRequest > const &components)
Construct a TriggerRecord using the given vector of components to initialize the TriggerRecordHeader.
size_t get_total_size_bytes() const
Get size of trigger record from underlying TriggerRecordHeader and Fragments.
TriggerRecordHeader m_header
TriggerRecordHeader object.
TriggerRecord(TriggerRecord &&)=default
Default TriggerRecord move constructor.
const std::vector< std::unique_ptr< Fragment > > & get_fragments_ref() const
Get a handle to the Fragments.
void set_header(const TriggerRecordHeader &header)
Set the TriggerRecordHeader to the given TriggerRecordHeader object.
virtual ~TriggerRecord()=default
TriggerRecord default destructor.
void add_fragment(std::unique_ptr< Fragment > &&fragment)
Add a Fragment pointer to the Fragments vector.
const TriggerRecordHeader & get_header_ref() const
Get a handle to the TriggerRecordHeader.
std::vector< std::unique_ptr< Fragment > > & get_fragments_ref()
TriggerRecord & operator=(TriggerRecord const &)=delete
TriggerRecords are not copy-assignable.
std::vector< std::unique_ptr< Fragment > > m_fragments
Vector of unique_ptrs to Fragment objects.
TriggerRecord(TriggerRecord const &)=delete
TriggerRecords are not copy-constructible.
void set_fragments(std::vector< std::unique_ptr< Fragment > > &&fragments)
Set the Fragments vector to the given vector of Fragments.
size_t get_sum_of_fragment_payload_sizes() const
Get the sum of the fragment payload sizes.
Additional data fields associated with a TriggerRecordHeader.