DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TriggerRecord.hpp
Go to the documentation of this file.
1
8
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 explicit TriggerRecord(std::vector<ComponentRequest> const& components);
34
39 explicit TriggerRecord(TriggerRecordHeader const& header);
40
45 const TriggerRecordHeader& get_header_ref() const { return m_header; }
47
48 TriggerRecordHeaderData get_header_data() const { return m_header.get_header(); }
49
54 const std::vector<std::unique_ptr<Fragment>>& get_fragments_ref() const { return m_fragments; }
55 std::vector<std::unique_ptr<Fragment>>& get_fragments_ref() { return m_fragments; }
56
61 void add_fragment(std::unique_ptr<Fragment>&& fragment) { m_fragments.emplace_back(std::move(fragment)); }
62
66 size_t get_total_size_bytes() const
67 {
68 size_t total_size = get_header_ref().get_total_size_bytes();
69
70 for (auto const& frag_ptr : m_fragments)
71 total_size += frag_ptr->get_size();
72
73 return total_size;
74 }
75
76 TriggerRecord(TriggerRecord const&) = delete;
78
81
82 ~TriggerRecord() = default;
83
84private:
86 std::vector<std::unique_ptr<Fragment>> m_fragments;
87};
88
89inline TriggerRecord::TriggerRecord(std::vector<ComponentRequest> const& components)
90 : m_header(components)
91 , m_fragments()
92{
93}
94
96 : m_header(header)
97 , m_fragments()
98{
99}
100
101} // namespace dunedaq::daqdataformats
102
103#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, including header and all component requests.
TriggerRecordHeaderData get_header_data() const
TriggerRecord & operator=(TriggerRecord &&)=default
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.
TriggerRecord(TriggerRecord &&)=default
const std::vector< std::unique_ptr< Fragment > > & get_fragments_ref() const
Get a handle to the Fragments.
void add_fragment(std::unique_ptr< Fragment > &&fragment)
Move a unique_ptr owning a fragment 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
std::vector< std::unique_ptr< Fragment > > m_fragments
TriggerRecord(TriggerRecord const &)=delete
Data fields associated with a TriggerRecordHeader.