Grok 20.3.2
grk::ChunkBuffer< T > Class Template Reference

Manages a partially ordered deque of buffer chunks that are added asynchronously out of order. More...

#include <ChunkBuffer.h>

Public Types

using index_type = T

Public Member Functions

 ChunkBuffer (size_t chunkSize, size_t offset, size_t length)
 ~ChunkBuffer ()=default
size_t size () const
size_t offset () const
size_t initialOffset () const
size_t chunkSize () const
bool set_offset (size_t new_offset)
bool increment_offset (std::ptrdiff_t off)
const uint8_t * currPtr (size_t desired_region) const
void add (T fetch_index, const uint8_t *buffer, size_t size)
void free_before (size_t offset)

Private Attributes

size_t chunkSize_
size_t offset_
size_t length_
size_t initialOffset_
std::deque< std::vector< uint8_t > > buffers_
base_ = 0
SimpleHeap< T > bufferheap_
last_contiguous_chunk_ = 0
size_t contiguous_length_ = 0
std::list< std::pair< size_t, std::vector< uint8_t > > > owned_buffers_
std::mutex mutex_
std::condition_variable cv_

Detailed Description

template<typename T = uint16_t>
class grk::ChunkBuffer< T >

Manages a partially ordered deque of buffer chunks that are added asynchronously out of order.

Behaves like a single contiguous buffer. Caller may have to wait until the desired region of the "contiguous" buffer actually arrives Note: supports "zero-copy"

Template Parameters
Tchunk index type

Member Typedef Documentation

◆ index_type

template<typename T = uint16_t>
using grk::ChunkBuffer< T >::index_type = T

Constructor & Destructor Documentation

◆ ChunkBuffer()

template<typename T = uint16_t>
grk::ChunkBuffer< T >::ChunkBuffer ( size_t chunkSize,
size_t offset,
size_t length )
inline

◆ ~ChunkBuffer()

template<typename T = uint16_t>
grk::ChunkBuffer< T >::~ChunkBuffer ( )
default

Member Function Documentation

◆ add()

template<typename T = uint16_t>
void grk::ChunkBuffer< T >::add ( T fetch_index,
const uint8_t * buffer,
size_t size )
inline

◆ chunkSize()

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::chunkSize ( ) const
inline

References chunkSize_.

Referenced by ChunkBuffer().

◆ currPtr()

template<typename T = uint16_t>
const uint8_t * grk::ChunkBuffer< T >::currPtr ( size_t desired_region) const
inline

◆ free_before()

template<typename T = uint16_t>
void grk::ChunkBuffer< T >::free_before ( size_t offset)
inline

◆ increment_offset()

template<typename T = uint16_t>
bool grk::ChunkBuffer< T >::increment_offset ( std::ptrdiff_t off)
inline

◆ initialOffset()

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::initialOffset ( ) const
inline

References initialOffset_.

◆ offset()

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::offset ( ) const
inline

References offset_.

Referenced by ChunkBuffer(), and free_before().

◆ set_offset()

template<typename T = uint16_t>
bool grk::ChunkBuffer< T >::set_offset ( size_t new_offset)
inline

◆ size()

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::size ( ) const
inline

References length_.

Referenced by add().

Member Data Documentation

◆ base_

template<typename T = uint16_t>
T grk::ChunkBuffer< T >::base_ = 0
private

Referenced by add(), currPtr(), and free_before().

◆ bufferheap_

template<typename T = uint16_t>
SimpleHeap<T> grk::ChunkBuffer< T >::bufferheap_
private

Referenced by add().

◆ buffers_

template<typename T = uint16_t>
std::deque<std::vector<uint8_t> > grk::ChunkBuffer< T >::buffers_
private

Referenced by add(), ChunkBuffer(), currPtr(), and free_before().

◆ chunkSize_

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::chunkSize_
private

◆ contiguous_length_

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::contiguous_length_ = 0
private

◆ cv_

template<typename T = uint16_t>
std::condition_variable grk::ChunkBuffer< T >::cv_
mutableprivate

◆ initialOffset_

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::initialOffset_
private

◆ last_contiguous_chunk_

template<typename T = uint16_t>
T grk::ChunkBuffer< T >::last_contiguous_chunk_ = 0
private

Referenced by add(), and currPtr().

◆ length_

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::length_
private

◆ mutex_

template<typename T = uint16_t>
std::mutex grk::ChunkBuffer< T >::mutex_
mutableprivate

◆ offset_

template<typename T = uint16_t>
size_t grk::ChunkBuffer< T >::offset_
private

◆ owned_buffers_

template<typename T = uint16_t>
std::list<std::pair<size_t, std::vector<uint8_t> > > grk::ChunkBuffer< T >::owned_buffers_
mutableprivate

Referenced by currPtr(), and free_before().


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