|
Grok 20.3.2
|
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_ |
| T | base_ = 0 |
| SimpleHeap< T > | bufferheap_ |
| T | 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_ |
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"
| T | chunk index type |
| using grk::ChunkBuffer< T >::index_type = T |
|
inline |
References buffers_, chunkSize(), chunkSize_, contiguous_length_, initialOffset_, length_, offset(), and offset_.
|
default |
|
inline |
References base_, bufferheap_, buffers_, chunkSize_, contiguous_length_, cv_, initialOffset_, last_contiguous_chunk_, length_, mutex_, and size().
|
inline |
References chunkSize_.
Referenced by ChunkBuffer().
|
inline |
References base_, buffers_, chunkSize_, contiguous_length_, cv_, initialOffset_, last_contiguous_chunk_, length_, mutex_, offset_, and owned_buffers_.
|
inline |
References base_, buffers_, chunkSize_, contiguous_length_, initialOffset_, mutex_, offset(), and owned_buffers_.
|
inline |
References contiguous_length_, cv_, grk::grklog, length_, mutex_, and offset_.
|
inline |
References initialOffset_.
|
inline |
References offset_.
Referenced by ChunkBuffer(), and free_before().
|
inline |
References contiguous_length_, cv_, grk::grklog, length_, mutex_, and offset_.
|
inline |
|
private |
Referenced by add(), currPtr(), and free_before().
|
private |
Referenced by add().
|
private |
Referenced by add(), ChunkBuffer(), currPtr(), and free_before().
|
private |
Referenced by add(), ChunkBuffer(), chunkSize(), currPtr(), and free_before().
|
private |
Referenced by add(), ChunkBuffer(), currPtr(), free_before(), increment_offset(), and set_offset().
|
mutableprivate |
Referenced by add(), currPtr(), increment_offset(), and set_offset().
|
private |
Referenced by add(), ChunkBuffer(), currPtr(), free_before(), and initialOffset().
|
private |
|
private |
Referenced by add(), ChunkBuffer(), currPtr(), increment_offset(), set_offset(), and size().
|
mutableprivate |
Referenced by add(), currPtr(), free_before(), increment_offset(), and set_offset().
|
private |
Referenced by ChunkBuffer(), currPtr(), increment_offset(), offset(), and set_offset().
|
mutableprivate |
Referenced by currPtr(), and free_before().