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 <nlohmann/json.hpp>
14
15#include <cstddef>
16
17namespace dunedaq {
18namespace datahandlinglibs {
19
26template<class T>
28{
29
30public:
32
34
37 delete;
40
42 virtual void conf(const appmodel::LatencyBuffer* conf) = 0;
43
45 virtual void scrap(const nlohmann::json& cfg) = 0;
46
48 virtual std::size_t occupancy() const = 0;
49
51 virtual bool write(T&& element) = 0;
52
54 virtual bool read(T& element) = 0;
55
57 // virtual bool put(T& element) = 0;
58
60 virtual const T* front() = 0;
61
63 virtual const T* back() = 0;
64
66 virtual void pop(std::size_t amount) = 0;
67
69 virtual void flush() = 0;
70
72 virtual void allocate_memory(size_t /*size*/) = 0;
73};
74
75} // namespace datahandlinglibs
76} // namespace dunedaq
77
78#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 const T * front()=0
Write referenced object into LB without moving it.
virtual void scrap(const nlohmann::json &cfg)=0
Unconfigure the LB.
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.
Including Qt Headers.