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 ExpectsOrder = T::expects_order;
23
29template<class T>
31{
32
33public:
35
37
40 delete;
43
45 virtual void conf(const appmodel::LatencyBuffer* conf) = 0;
46
48 virtual void scrap(const appfwk::DAQModule::CommandData_t& cfg) = 0;
49
51 virtual std::size_t occupancy() const = 0;
52
54 virtual bool write(T&& element) = 0;
55
57 virtual bool read(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
Allocate memory for LB.
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
Get pointer to the front of 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.
Definition module.cpp:16