Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
Gray::cStreamQueue Class Reference

#include <cStreamQueue.h>

Inheritance diagram for Gray::cStreamQueue:
Gray::cStream Gray::cQueueBytes Gray::cStreamInput Gray::cStreamOutput Gray::cQueueDyn< BYTE > Gray::cStreamBase Gray::cStreamBase Gray::cQueueRW< TYPE > Gray::cQueueRead< BYTE > Gray::cQueueBase Gray::cStreamStackInp Gray::cStreamStackOut GrayLib::cThreadQueue Gray::cStreamTextReader GrayCodec::cAudioAACDec GrayCodec::cAudioMP3Dec GrayCodec::cAudioOpusDec GrayLib::cAudioADPCMDec GrayLib::cStreamBZ2Decompress GrayLib::cStreamCipherDec GrayLib::cStreamZLibDecompress Gray::cStreamStackPackets GrayCodec::cAudioAACEnc GrayCodec::cAudioMP3Enc GrayCodec::cAudioOpusEnc GrayLib::cAudioADPCMEnc GrayLib::cStreamBZ2Compress GrayLib::cStreamCipherEnc GrayLib::cStreamZLibCompress

Public Member Functions

 cStreamQueue (size_t nGrowSizeChunk=4 *1024, size_t nGrowSizeMax=cHeap::k_ALLOC_MAX) noexcept
 
 ~cStreamQueue ()
 
virtual HRESULT WriteX (const void *pData, size_t nDataSize) override
 
virtual HRESULT ReadX (void *pData, size_t nDataSize) override
 
virtual HRESULT ReadPeek (void *pData, size_t nDataSize) override
 
virtual size_t SetSeekSizeMin (size_t nSizeMin=k_FILE_BLOCK_SIZE) override
 
virtual STREAM_SEEKRET_t Seek (STREAM_OFFSET_t offset, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set) override
 Disambiguate Seek for cStreamBase to cStreamInput for stupid compiler. More...
 
virtual STREAM_POS_t GetLength () const override
 
- Public Member Functions inherited from Gray::cStream
virtual STREAM_POS_t GetPosition () const override
 
void SeekToBegin ()
 
STREAM_POS_t SeekToEnd ()
 
- Public Member Functions inherited from Gray::cStreamInput
 cStreamInput () noexcept
 
virtual ~cStreamInput ()
 
virtual HRESULT ReadX (OUT void *pData, size_t nDataSize)
 
HRESULT ReadAll (OUT cHeapBlock &block, size_t nSizeExtra=0)
 
virtual HRESULT ReadStringLine (OUT char *pszBuffer, StrLen_t iSizeMax)
 
virtual HRESULT ReadStringLine (OUT wchar_t *pszBuffer, StrLen_t iSizeMax)
 
HRESULT ReadT (OUT void *pVal, size_t nSize)
 
template<typename TYPE >
HRESULT ReadT (OUT TYPE &val)
 
template<typename TYPE >
HRESULT ReadTN (OUT TYPE &val)
 
HRESULT ReadSize (OUT size_t &nSize)
 
template<typename TYPE >
HRESULT ReadSizeT (OUT TYPE &n)
 
HRESULT ReadHashCode (OUT UINT32 &nHashCode)
 
HRESULT ReadHashCode (OUT UINT64 &nHashCode)
 
HRESULT ReadN (OUT BYTE *pBuffer, size_t nSizeMax)
 
template<typename _CH >
HRESULT ReadStringN (OUT _CH *pszStr, StrLen_t iSizeMax)
 
- Public Member Functions inherited from Gray::cStreamBase
virtual ~cStreamBase ()
 
void SeekToBegin ()
 
STREAM_POS_t SeekToEnd ()
 
- Public Member Functions inherited from Gray::cStreamOutput
 cStreamOutput () noexcept
 
virtual ~cStreamOutput ()
 
HRESULT WriteT (const void *pVal, size_t nDataSize)
 
template<typename TYPE >
HRESULT WriteT (TYPE val)
 
HRESULT WriteSize (size_t nSize)
 
HRESULT WriteHashCode (HASHCODE_t nHashCode)
 
HRESULT WriteN (const void *pBuffer, size_t nSize)
 
template<typename _CH >
HRESULT WriteStringN (const _CH *pszStr)
 
template<typename _CH >
HRESULT WriteCharRepeat (_CH nChar, int nCount=1)
 
virtual HRESULT WriteString (const char *pszStr)
 
virtual HRESULT WriteString (const wchar_t *pszStr)
 
StrLen_t VPrintf (const char *pszFormat, va_list args)
 
StrLen_t VPrintf (const wchar_t *pszFormat, va_list args)
 
StrLen_t _cdecl Printf (const char *pszFormat,...)
 
StrLen_t _cdecl Printf (const wchar_t *pszFormat,...)
 
HRESULT WriteStream (cStreamInput &sInp, STREAM_POS_t nSizeMax=k_FILE_BLOCK_SIZE, IStreamProgressCallback *pProgress=nullptr, TIMESYSD_t nTimeout=0)
 Copy cStreamInput to this stream. More...
 
virtual HRESULT FlushX ()
 
- Public Member Functions inherited from Gray::cQueueBytes
 cQueueBytes (size_t nGrowSizeChunk=8 *1024, size_t nGrowSizeMax=cHeap::k_ALLOC_MAX) noexcept
 
 ~cQueueBytes ()
 
bool InsertDataHead (const BYTE *pDataSrc, size_t iLen)
 
bool SetAllData (const BYTE *pData, size_t iLen)
 
- Public Member Functions inherited from Gray::cQueueDyn< BYTE >
 cQueueDyn (ITERATE_t nGrowSizeChunk=128, ITERATE_t nGrowSizeMax=(cHeap::k_ALLOC_MAX/sizeof(BYTE))) noexcept
 
 ~cQueueDyn ()
 
void put_GrowSizeChunk (ITERATE_t nGrowSizeChunk) noexcept
 
ITERATE_t get_GrowSizeChunk () const noexcept
 
bool MakeWritePrepared (ITERATE_t iDesiredCount=1)
 
BYTE * GetWritePrepared (ITERATE_t iDesiredCount=1)
 
bool WriteQ (BYTE val)
 
void WriteQ (cQueueRead< BYTE > &queue)
 
HRESULT WriteQty (const BYTE *pVal, ITERATE_t iCount)
 
HRESULT WriteX (const void *pData, size_t nDataSize)
 
- Public Member Functions inherited from Gray::cQueueRW< TYPE >
 cQueueRW () noexcept
 
 cQueueRW (TYPE *pData, ITERATE_t iDataAlloc, ITERATE_t iReadLast, ITERATE_t iWriteLast, ITERATE_t iAutoReadCommit=0)
 
 cQueueRW (const TYPE *pData, ITERATE_t iDataMax)
 
 ~cQueueRW ()
 
void ReadCommitCheck ()
 
ITERATE_t get_AutoReadCommit () const
 
void put_AutoReadCommit (ITERATE_t iAutoReadCommit=8 *1024)
 
void put_ReadIndex (ITERATE_t iReadLo)
 
STREAM_SEEKRET_t SeekQ (STREAM_OFFSET_t iOffset, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set)
 
HRESULT ReadQty (TYPE *pData, ITERATE_t iDataMaxQty)
 
HRESULT ReadX (void *pData, size_t nDataSize)
 
bool isFullQ () const
 
ITERATE_t get_WriteQty () const
 
TYPEget_WritePtr () const
 
HRESULT WriteQty (const TYPE *pData, ITERATE_t iQtyMax)
 
HRESULT WriteX (const void *pData, size_t nDataSize)
 
void AdvanceWrite (ITERATE_t iCount=1)
 
- Public Member Functions inherited from Gray::cQueueRead< BYTE >
 cQueueRead (const BYTE *pData=nullptr, ITERATE_t iReadLast=0, ITERATE_t iWriteLast=0) noexcept
 
 ~cQueueRead ()
 
const BYTE * get_ReadPtr () const
 
void SetQueueRead (const BYTE *pData, ITERATE_t iReadLast=0, ITERATE_t iWriteLast=0)
 
BYTE Read1 (void)
 
HRESULT ReadPeek (BYTE *pData, ITERATE_t iDataMaxQty)
 
HRESULT ReadQty (BYTE *pData, ITERATE_t iDataMaxQty)
 
void ReadCommitNow ()
 
- Public Member Functions inherited from Gray::cQueueBase
 cQueueBase (ITERATE_t iReadLast=0, ITERATE_t iWriteLast=0) noexcept
 
void InitQ (ITERATE_t iReadLast=0, ITERATE_t iWriteLast=0) noexcept
 
bool isEmptyQ () const noexcept
 
void EmptyQ () noexcept
 
ITERATE_t get_ReadIndex () const noexcept
 
ITERATE_t get_WriteIndex () const noexcept
 
ITERATE_t get_ReadQty () const
 
void AdvanceRead (ITERATE_t iCount=1)
 
STREAM_SEEKRET_t SeekQ (STREAM_OFFSET_t iOffset, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set)
 

Protected Member Functions

 cStreamQueue (const cStreamQueue &a) noexcept
 
- Protected Member Functions inherited from Gray::cQueueDyn< BYTE >
bool AllocSizeMaxQ (ITERATE_t iDataAlloc)
 
- Protected Member Functions inherited from Gray::cQueueRW< TYPE >
void WriteQN (const TYPE *pData, ITERATE_t iQtyMax)
 

Additional Inherited Members

- Static Public Attributes inherited from Gray::cStreamBase
static const BYTE k_SIZE_MASK = 0x80
 Used for WriteSize() More...
 
static const size_t k_FILE_BLOCK_SIZE = (32 * 1024)
 default arbitrary transfer block size. more than this is NOT more efficient. More...
 
- Protected Attributes inherited from Gray::cQueueDyn< BYTE >
ITERATE_t m_nGrowSizeChunk
 number of TYPE elements to grow by in a single re-alloc chunk. 0 = never grow. More...
 
ITERATE_t m_nGrowSizeMax
 Total arbitrary max allowed for m_iDataSizeAlloc. 0 = never grow. More...
 
- Protected Attributes inherited from Gray::cQueueRW< TYPE >
ITERATE_t m_iDataSizeAlloc
 The max qty we can write into m_pData. Maybe NOT exactly same as m_pData true OS allocated size? More...
 
ITERATE_t m_iAutoReadCommit
 Read data is destroyed once read more than this amount. make more room for writing. 0 = don't do this, just fail write if we run out of space. More...
 
- Protected Attributes inherited from Gray::cQueueRead< BYTE >
BYTE * m_pData
 NOT owned/managed block of memory I read from. not freed on destruct. More...
 
- Protected Attributes inherited from Gray::cQueueBase
ITERATE_t m_iReadLast
 old items removed/read from here. More...
 
ITERATE_t m_iWriteLast
 new items added/written here. end of read. More...
 

Detailed Description

Read and write to/from a dynamic memory cStream. Grow the cQueueBytes memory allocation as needed. similar to cFileMem, System.IO.MemoryStream

Constructor & Destructor Documentation

◆ cStreamQueue() [1/2]

Gray::cStreamQueue::cStreamQueue ( const cStreamQueue a)
inlineprotectednoexcept

do nothing!

◆ cStreamQueue() [2/2]

Gray::cStreamQueue::cStreamQueue ( size_t  nGrowSizeChunk = 4 * 1024,
size_t  nGrowSizeMax = cHeap::k_ALLOC_MAX 
)
inlinenoexcept
  • nGrowSizeMax = 0 = not used. write only ?

◆ ~cStreamQueue()

Gray::cStreamQueue::~cStreamQueue ( )
inline

Member Function Documentation

◆ GetLength()

virtual STREAM_POS_t Gray::cStreamQueue::GetLength ( ) const
inlineoverridevirtual

Get the full Seek-able length. line Seek(SEEK_END).

Reimplemented from Gray::cStream.

◆ ReadPeek()

virtual HRESULT Gray::cStreamQueue::ReadPeek ( void *  pData,
size_t  nDataSize 
)
inlineoverridevirtual

Reimplemented from Gray::cStreamInput.

◆ ReadX()

virtual HRESULT Gray::cStreamQueue::ReadX ( void *  pData,
size_t  nDataSize 
)
inlineoverridevirtual

◆ Seek()

virtual STREAM_SEEKRET_t Gray::cStreamQueue::Seek ( STREAM_OFFSET_t  iOffset,
SEEK_ORIGIN_TYPE  eSeekOrigin = SEEK_Set 
)
inlineoverridevirtual

Disambiguate Seek for cStreamBase to cStreamInput for stupid compiler.

Reimplemented from Gray::cStream.

Reimplemented in Gray::cStreamTextReader.

◆ SetSeekSizeMin()

virtual size_t Gray::cStreamQueue::SetSeekSizeMin ( size_t  nSizeMin = k_FILE_BLOCK_SIZE)
inlineoverridevirtual

similar to ReadCommit (put_AutoReadCommitSize) size. Used by cStreamTransaction.

  • nSizeMin = 0 = turn off auto read commit. Allow Seek() back.
    Returns
    previous value for get_AutoReadCommit.

Reimplemented from Gray::cStreamInput.

◆ WriteX()

virtual HRESULT Gray::cStreamQueue::WriteX ( const void *  pData,
size_t  nDataSize 
)
inlineoverridevirtual

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