Periodic data transmission - relevant for trigger in particular.
49 {
50
52
54
55 {
59 }
62
64 std::vector<std::pair<void*, size_t>> frag_pieces;
65
66
68 auto tail = acc.last();
69 auto head = acc.first();
72
76 }
80 auto num_tps = frag_pieces.size();
88
89 if (num_tps > 0) {
90 tpset.objects.reserve(frag_pieces.size());
91 bool first_tp = true;
92 for( auto f : frag_pieces) {
93 trgdataformats::TriggerPrimitive tp = *(
static_cast<trgdataformats::TriggerPrimitive*
>(
f.first));
94
95 if(first_tp) {
96 tpset.start_time = tp.time_start;
97 first_tp = false;
98 }
99 tpset.end_time = tp.time_start;
100 tpset.objects.emplace_back(std::move(tp));
101 }
102 }
106 }
108
109
111 }
112 }
113 {
116 }
118 return;
119}
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.