8#ifndef DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_CONCEPTS_LATENCYBUFFERCONCEPT_HPP_
9#define DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_CONCEPTS_LATENCYBUFFERCONCEPT_HPP_
11#include <nlohmann/json.hpp>
18namespace datahandlinglibs {
45 virtual void scrap(
const nlohmann::json& cfg) = 0;
51 virtual bool write(T&& element) = 0;
54 virtual bool read(T& element) = 0;
63 virtual const T*
back() = 0;
66 virtual void pop(std::size_t amount) = 0;
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 ~LatencyBufferConcept()
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.