Grok 20.3.2
grk::PacketCache Class Reference

Manages packet buffers and associated packet parsers. More...

#include <PacketCache.h>

Inheritance diagram for grk::PacketCache:
grk::SparseBuffer

Public Member Functions

 PacketCache ()
 Constructs a PacketCache.
 ~PacketCache ()
 Destroys a PacketCache.
void next (size_t offset)
 Moves to next chunk / packet buffer and associated PacketParser if present.
void rewind (void) override
 Resets state to beginning of packet list, and beginning of parser list.
PacketParsergen (ITileProcessor *tileProcessor, uint16_t packetSequenceNumber, uint16_t compno, uint8_t resno, uint64_t precinctIndex, uint16_t layno, uint32_t cachedLength)
 Generates a PacketParser if it doesn't exist.
Public Member Functions inherited from grk::SparseBuffer
 SparseBuffer ()
 Constructs a SparseBuffer.
virtual ~SparseBuffer ()
 Destroys a SparseBuffer.
size_t skip (size_t numBytes)
 Skips contiguous bytes.
size_t read (void *buffer, size_t numBytes)
 Reads contiguous bytes.
size_t length (void) const
 Gets contiguous length.
Buffer8push (uint8_t *buf, size_t len, bool ownsData)
 Pushes a new chunk (sequential mode).
Buffer8push (size_t index, uint8_t *buf, size_t len, bool ownsData)
 Pushes a new chunk (indexed mode).
virtual void chunkSkip (size_t offset)
 Increments offset of current chunk.
size_t chunkLength (void)
 Gets current chunk length.
uint8_t * chunkPtr (void)
 Gets current chunk pointer.
bool empty (void) const

Private Member Functions

void next (void)
 Creates next parser, set to nullptr as placeholder, if the parser iterator is at the end.

Private Attributes

std::vector< PacketParser * > parsers_
std::vector< PacketParser * >::iterator iter_

Detailed Description

Manages packet buffers and associated packet parsers.

Constructor & Destructor Documentation

◆ PacketCache()

grk::PacketCache::PacketCache ( )

Constructs a PacketCache.

References iter_, and parsers_.

◆ ~PacketCache()

grk::PacketCache::~PacketCache ( )

Destroys a PacketCache.

References parsers_.

Member Function Documentation

◆ gen()

PacketParser * grk::PacketCache::gen ( ITileProcessor * tileProcessor,
uint16_t packetSequenceNumber,
uint16_t compno,
uint8_t resno,
uint64_t precinctIndex,
uint16_t layno,
uint32_t cachedLength )

Generates a PacketParser if it doesn't exist.

Parameters
tileProcessorTileProcssor
packetSequenceNumberpacket sequence number
compnocomponent number
resnoresolution number
precinctIndexprecinct index
laynolayer number
cachedLengthsignalled length from PLT/PLM marker, or cached length from previous read of header

References iter_, next(), and parsers_.

Referenced by grk::T2Decompress::parsePacket().

◆ next() [1/2]

void grk::PacketCache::next ( size_t offset)

Moves to next chunk / packet buffer and associated PacketParser if present.

If no parser is available, then nullptr is pushed to list of parsers

Parameters
offsetremaining bytes in current chunk

References grk::SparseBuffer::chunkSkip(), next(), and grk::SparseBuffer::offset().

Referenced by grk::T2Decompress::parsePacket().

◆ next() [2/2]

void grk::PacketCache::next ( void )
private

Creates next parser, set to nullptr as placeholder, if the parser iterator is at the end.

Otherwise the iterator is incremented

References iter_, and parsers_.

Referenced by gen(), and next().

◆ rewind()

void grk::PacketCache::rewind ( void )
overridevirtual

Resets state to beginning of packet list, and beginning of parser list.

Reimplemented from grk::SparseBuffer.

References iter_, parsers_, and grk::SparseBuffer::rewind().

Member Data Documentation

◆ iter_

std::vector<PacketParser*>::iterator grk::PacketCache::iter_
private

Referenced by gen(), next(), PacketCache(), and rewind().

◆ parsers_

std::vector<PacketParser*> grk::PacketCache::parsers_
private

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