commonlib
DiskBuffer< T > Class Template Reference

The class DiskBuffer implements a first-in-first-out (FIFO) data structure on physical disc. More...

#include <disk_buffer.h>

Inheritance diagram for DiskBuffer< T >:
FifoBufferBase< T > IDirectArraySourceBuffer< T > IDirectArrayTargetBuffer< T > ISourceBuffer< T > ITargetBuffer< T >

Public Member Functions

 DiskBuffer (size_t capacity, const std::string &fileName, bool deleteFileAfterClose=true)
 The constructor prepares file on disk and creates an instance. More...
 
void reset () override
 Function resets all positions to default value. More...
 
FileHandler< T > & getHandler ()
 Returns buffer (file) handler. More...
 
size_t write (const T *samples, size_t samplesCount, size_t pos) override
 Writes samples into buffer. More...
 
size_t read (T *samples, size_t samplesCount, const size_t pos) override
 Reads from buffer into samples. More...
 
T * getData () const override
 Function returns pointer to the internal buffer. More...
 
bool validateReadPos (size_t readPos)
 Function validates whether reading position is inside buffer boundaries. More...
 
- Public Member Functions inherited from FifoBufferBase< T >
 FifoBufferBase (size_t aCapacity=0)
 The constructor creates an instance. More...
 
size_t getReadPos () override
 Function returns current read position. More...
 
size_t getWritePos () override
 Function returns current write position. More...
 
size_t getSize () override
 Function returns current buffer size in values. More...
 
size_t getRemainingSize () override
 Function returns remaining size in values. More...
 
virtual void setCapacity (size_t aCapacity)
 Function allocates memory at the heap. More...
 
size_t getCapacity () const override
 Function returns buffer capacity in values. More...
 
virtual bool isFull ()
 Function returns true if buffer is full. More...
 
std::recursive_mutex & getLock () override
 Function return locking object. More...
 
void incrementReadPosition (size_t pos) override
 Function increments read position for N values. More...
 
void incrementWritePosition (size_t pos) override
 Function increments write position for N values. More...
 
- Public Member Functions inherited from IDirectArraySourceBuffer< T >
size_t readSamples (T *samples, size_t samplesCount, bool incrementPosition=true) override
 Function reads the samples from buffer. More...
 
virtual size_t readSamplesAt (T *samples, size_t samplesCount, bool incrementPosition=true, size_t readOffset=0)
 Function reads the samples from buffer. More...
 
- Public Member Functions inherited from IDirectArrayTargetBuffer< T >
size_t writeSamples (const T *samples, size_t samplesCount, bool incrementPosition=true) override
 Function pushes the samples into buffer. More...
 

Additional Inherited Members

- Protected Member Functions inherited from IDirectArraySourceBuffer< T >
virtual size_t read (T *samples, size_t samplesCount)
 Function read from buffer from current location. More...
 
- Protected Member Functions inherited from IDirectArrayTargetBuffer< T >
virtual size_t write (const T *samples, size_t samplesCount)
 Implements write into buffer to current location. More...
 
- Protected Attributes inherited from FifoBufferBase< T >
std::recursive_mutex lock
 
size_t size {0}
 
size_t capacity {0}
 

Detailed Description

template<typename T>
class DiskBuffer< T >

The class DiskBuffer implements a first-in-first-out (FIFO) data structure on physical disc.

Constructor & Destructor Documentation

◆ DiskBuffer()

template<typename T >
DiskBuffer< T >::DiskBuffer ( size_t  capacity,
const std::string &  fileName,
bool  deleteFileAfterClose = true 
)
inline

The constructor prepares file on disk and creates an instance.

Parameters
capacitynumber of elements of type T that can be stored in buffer.
fileNamefull path + name.

Member Function Documentation

◆ getData()

template<typename T >
T * DiskBuffer< T >::getData ( ) const
overridevirtual

Function returns pointer to the internal buffer.

Returns
Pointer to the first sample in the buffer.

Implements IDirectArrayTargetBuffer< T >.

◆ getHandler()

template<typename T >
FileHandler< T > & DiskBuffer< T >::getHandler ( )
inline

Returns buffer (file) handler.

Returns
File handler

◆ read()

template<typename T>
size_t DiskBuffer< T >::read ( T *  samples,
size_t  samplesCount,
const size_t  pos 
)
overridevirtual

Reads from buffer into samples.

Parameters
samplespointer to the first sample.
samplesCountnumber of samples to be read.
poslocation of read from buffer.
Returns
The total number of elements successfully read.

Reimplemented from IDirectArraySourceBuffer< T >.

◆ reset()

template<typename T >
void DiskBuffer< T >::reset ( )
inlineoverridevirtual

Function resets all positions to default value.

Returns
void

Reimplemented from FifoBufferBase< T >.

◆ validateReadPos()

template<typename T >
bool DiskBuffer< T >::validateReadPos ( size_t  readPos)

Function validates whether reading position is inside buffer boundaries.

Returns
True if readPos is inside read and write limits.

◆ write()

template<typename T >
size_t DiskBuffer< T >::write ( const T *  samples,
size_t  samplesCount,
size_t  pos 
)
overridevirtual

Writes samples into buffer.

Parameters
samplespointer to the first sample.
samplesCountnumber of samples to be written.
poslocation of write in buffer.
Returns
The total number of elements successfully written.

Reimplemented from IDirectArrayTargetBuffer< T >.


The documentation for this class was generated from the following file: