DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
LatencyBufferConcept.hpp
Go to the documentation of this file.
1
8#ifndef DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_CONCEPTS_LATENCYBUFFERCONCEPT_HPP_
9#define DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_CONCEPTS_LATENCYBUFFERCONCEPT_HPP_
10
11#include "appfwk/DAQModule.hpp"
14
15#include <cstddef>
16#include <concepts>
17
18namespace dunedaq {
19namespace datahandlinglibs {
20
21template<typename T>
22concept SupportsDelayedPostprocessing = T::supports_delayed_postprocessing;
23
30template<class T>
32{
33
34public:
36
38
41 delete;
44
46 virtual void conf(const appmodel::LatencyBuffer* conf) = 0;
47
49 virtual void scrap(const appfwk::DAQModule::CommandData_t& cfg) = 0;
50
52 virtual std::size_t occupancy() const = 0;
53
55 virtual bool write(T&& element) = 0;
56
58 virtual bool read(T& element) = 0;
59
61 // virtual bool put(T& element) = 0;
62
64 virtual const T* front() = 0;
65
67 virtual const T* back() = 0;
68
70 virtual void pop(std::size_t amount) = 0;
71
73 virtual void flush() = 0;
74
76 virtual void allocate_memory(size_t /*size*/) = 0;
77};
78
79} // namespace datahandlinglibs
80} // namespace dunedaq
81
82#endif // DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_CONCEPTS_LATENCYBUFFERCONCEPT_HPP_
virtual void conf(const appmodel::LatencyBuffer *conf)=0
Configure the LB.
virtual void pop(std::size_t amount)=0
Pop specified amount of elements from LB.
LatencyBufferConcept & operator=(LatencyBufferConcept &&)=delete
LatencyBufferConcept is not move-assignable.
virtual void allocate_memory(size_t)=0
Whether or not the buffer is allocatable. false by default.
LatencyBufferConcept & operator=(const LatencyBufferConcept &)=delete
LatencyBufferConcept is not copy-assginable.
virtual void scrap(const appfwk::DAQModule::CommandData_t &cfg)=0
Unconfigure the LB.
virtual const T * front()=0
Write referenced object into LB without moving it.
virtual bool read(T &element)=0
Move object from LB to referenced.
virtual bool write(T &&element)=0
Move referenced object into LB.
virtual const T * back()=0
Get pointer to the back of the LB.
virtual void flush()=0
Flush all elements from the latency buffer.
LatencyBufferConcept(LatencyBufferConcept &&)=delete
LatencyBufferConcept is not move-constructible.
LatencyBufferConcept(const LatencyBufferConcept &)=delete
LatencyBufferConcept is not copy-constructible.
virtual std::size_t occupancy() const =0
Occupancy of LB.
The DUNE-DAQ namespace.