Periodic data transmission - relevant for trigger in particular.
47 {
48
50
52
53 {
57 }
60
62 std::vector<std::pair<void*, size_t>> frag_pieces;
63
64
66 auto tail = acc.last();
67 auto head = acc.first();
70
74 }
78 auto num_tps = frag_pieces.size();
86
87 if (num_tps > 0) {
88 tpset.objects.reserve(frag_pieces.size());
89 bool first_tp = true;
90 for( auto f : frag_pieces) {
91 trgdataformats::TriggerPrimitive tp = *(
static_cast<trgdataformats::TriggerPrimitive*
>(
f.first));
92
93 if(first_tp) {
94 tpset.start_time = tp.time_start;
95 first_tp = false;
96 }
97 tpset.end_time = tp.time_start;
98 tpset.objects.emplace_back(std::move(tp));
99 }
100 }
104 }
106
107
109 }
110 }
111 {
114 }
116 return;
117}
std::atomic< bool > m_cleanup_requested
std::condition_variable m_cv
typename dunedaq::datahandlinglibs::RequestHandlerConcept< TriggerPrimitiveTypeAdapter, datahandlinglibs::SkipListLatencyBufferModel< TriggerPrimitiveTypeAdapter > >::RequestResult RequestResult
std::atomic< uint64_t > m_num_periodic_send_failed
std::atomic< uint64_t > m_num_periodic_sent
std::vector< std::pair< void *, size_t > > get_fragment_pieces(uint64_t start_win_ts, uint64_t end_win_ts, RequestResult &rres)
std::shared_ptr< datahandlinglibs::SkipListLatencyBufferModel< TriggerPrimitiveTypeAdapter > > & m_latency_buffer
daqdataformats::SourceID m_sourceid
std::atomic< int > m_requests_running
typename folly::ConcurrentSkipList< TriggerPrimitiveTypeAdapter >::Accessor SkipListAcc
static constexpr timeout_t s_no_block
uint64_t m_ts_set_sender_offset_ticks
uint64_t m_next_tpset_seqno
timestamp_t m_start_win_ts
Set< trgdataformats::TriggerPrimitive > TPSet
void warning(const Issue &issue)
This message represents a request for data sent to a single component of the DAQ.