gwenhywfar 5.12.0
ringbuffer.h File Reference

Go to the source code of this file.

Typedefs

typedef struct GWEN_RINGBUFFER GWEN_RINGBUFFER
 

Functions

Constructor And Destructor
GWENHYWFAR_API void GWEN_RingBuffer_free (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API GWEN_RINGBUFFERGWEN_RingBuffer_new (unsigned int size)
 
Reading And Writing
GWENHYWFAR_API int GWEN_RingBuffer_ReadByte (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API int GWEN_RingBuffer_ReadBytes (GWEN_RINGBUFFER *rb, char *buffer, uint32_t *size)
 
GWENHYWFAR_API int GWEN_RingBuffer_WriteByte (GWEN_RINGBUFFER *rb, char c)
 
GWENHYWFAR_API int GWEN_RingBuffer_WriteBytes (GWEN_RINGBUFFER *rb, const char *buffer, uint32_t *size)
 
Informational Functions
GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetBufferSize (const GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetBytesLeft (const GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetUsedBytes (const GWEN_RINGBUFFER *rb)
 
Statistical Functions
GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetEmptyCounter (const GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetFullCounter (const GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUsedBytes (const GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetThroughput (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API void GWEN_RingBuffer_Reset (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API void GWEN_RingBuffer_ResetEmptyCounter (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API void GWEN_RingBuffer_ResetFullCounter (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API void GWEN_RingBuffer_ResetMaxUsedBytes (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API void GWEN_RingBuffer_ResetThroughput (GWEN_RINGBUFFER *rb)
 
Functions For Direct Manipulation Of The Buffer

Please use these functions with care. These function are supported in order to avoid unnecessary copying.

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUnsegmentedRead (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUnsegmentedWrite (GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API const char * GWEN_RingBuffer_GetReadPointer (const GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API char * GWEN_RingBuffer_GetWritePointer (const GWEN_RINGBUFFER *rb)
 
GWENHYWFAR_API void GWEN_RingBuffer_SkipBytesRead (GWEN_RINGBUFFER *rb, uint32_t psize)
 
GWENHYWFAR_API void GWEN_RingBuffer_SkipBytesWrite (GWEN_RINGBUFFER *rb, uint32_t psize)
 

Typedef Documentation

◆ GWEN_RINGBUFFER

Definition at line 48 of file ringbuffer.h.

Function Documentation

◆ GWEN_RingBuffer_free()

GWENHYWFAR_API void GWEN_RingBuffer_free ( GWEN_RINGBUFFER * rb)

Destructor.

◆ GWEN_RingBuffer_GetBufferSize()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetBufferSize ( const GWEN_RINGBUFFER * rb)

Returns the size of the ring buffer.

◆ GWEN_RingBuffer_GetBytesLeft()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetBytesLeft ( const GWEN_RINGBUFFER * rb)

Returns the number of bytes which still can be stored inside the ring buffer.

◆ GWEN_RingBuffer_GetEmptyCounter()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetEmptyCounter ( const GWEN_RINGBUFFER * rb)

Returns the number of times the buffer was empty.

◆ GWEN_RingBuffer_GetFullCounter()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetFullCounter ( const GWEN_RINGBUFFER * rb)

Returns the number of times the buffer was full.

◆ GWEN_RingBuffer_GetMaxUnsegmentedRead()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUnsegmentedRead ( GWEN_RINGBUFFER * rb)

Returns the maximum number of bytes which can be read with a following call to GWEN_RingBuffer_ReadBytes. This value (if not 0) can be used for GWEN_RingBuffer_SkipBytesRead.

◆ GWEN_RingBuffer_GetMaxUnsegmentedWrite()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUnsegmentedWrite ( GWEN_RINGBUFFER * rb)

Returns the maximum number of bytes which can be written with a following call to GWEN_RingBuffer_WriteBytes. This value (if not 0) can be used for GWEN_RingBuffer_SkipBytesWrite.

◆ GWEN_RingBuffer_GetMaxUsedBytes()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUsedBytes ( const GWEN_RINGBUFFER * rb)

Returns the maximum number of bytes which has been stored in the buffer.

◆ GWEN_RingBuffer_GetReadPointer()

GWENHYWFAR_API const char * GWEN_RingBuffer_GetReadPointer ( const GWEN_RINGBUFFER * rb)

Returne the current read pointer. Please note that the return value of GWEN_RingBuffer_GetMaxUnsegmentedRead indicates the maximum number of bytes at this position available! Trying to access bytes beyond that boundary will most likely result in segmentation faults. Please make sure that you call GWEN_RingBuffer_SkipBytesRead after taking data from the buffer in order to keep the internal structure intact.

◆ GWEN_RingBuffer_GetThroughput()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetThroughput ( GWEN_RINGBUFFER * rb)

Returns the number of bytes which have passed through this buffer (i.e. bytes that have been written to and read from the buffer.

◆ GWEN_RingBuffer_GetUsedBytes()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetUsedBytes ( const GWEN_RINGBUFFER * rb)

Returns the number of bytes stored inside the ring buffer.

◆ GWEN_RingBuffer_GetWritePointer()

GWENHYWFAR_API char * GWEN_RingBuffer_GetWritePointer ( const GWEN_RINGBUFFER * rb)

Returne the current write pointer. Please note that the return value of GWEN_RingBuffer_GetMaxUnsegmentedWrite indicates the maximum number of bytes at this position available! Trying to access bytes beyond that boundary will most likely result in segmentation faults. Please make sure that you call GWEN_RingBuffer_SkipBytesWrite after writing data to the buffer in order to keep the internal structure intact.

◆ GWEN_RingBuffer_new()

GWENHYWFAR_API GWEN_RINGBUFFER * GWEN_RingBuffer_new ( unsigned int size)

Creates a new ring buffer

Parameters
sizemaximum size of the ring buffer

◆ GWEN_RingBuffer_ReadByte()

GWENHYWFAR_API int GWEN_RingBuffer_ReadByte ( GWEN_RINGBUFFER * rb)

Reads a single byte from the ring buffer.

◆ GWEN_RingBuffer_ReadBytes()

GWENHYWFAR_API int GWEN_RingBuffer_ReadBytes ( GWEN_RINGBUFFER * rb,
char * buffer,
uint32_t * size )

Read bytes from the ring buffer.

Parameters
rbring buffer
bufferpointer to the destination buffer
sizepointer to a variable that contains the number of bytes to read. Upon return this variable contains the number of bytes actually copied.

◆ GWEN_RingBuffer_Reset()

GWENHYWFAR_API void GWEN_RingBuffer_Reset ( GWEN_RINGBUFFER * rb)

◆ GWEN_RingBuffer_ResetEmptyCounter()

GWENHYWFAR_API void GWEN_RingBuffer_ResetEmptyCounter ( GWEN_RINGBUFFER * rb)

◆ GWEN_RingBuffer_ResetFullCounter()

GWENHYWFAR_API void GWEN_RingBuffer_ResetFullCounter ( GWEN_RINGBUFFER * rb)

◆ GWEN_RingBuffer_ResetMaxUsedBytes()

GWENHYWFAR_API void GWEN_RingBuffer_ResetMaxUsedBytes ( GWEN_RINGBUFFER * rb)

Resets the counter for the maximum number of bytes stored in the buffer.

◆ GWEN_RingBuffer_ResetThroughput()

GWENHYWFAR_API void GWEN_RingBuffer_ResetThroughput ( GWEN_RINGBUFFER * rb)

Resets the buffers throughput counter to zero.

◆ GWEN_RingBuffer_SkipBytesRead()

GWENHYWFAR_API void GWEN_RingBuffer_SkipBytesRead ( GWEN_RINGBUFFER * rb,
uint32_t psize )

Adjusts the internal pointers and statistical data as if GWEN_RingBuffer_ReadBytes had been called. Please note that the size value given here MUST be <= the value returned by GWEN_RingBuffer_GetMaxUnsegmentedRead !

◆ GWEN_RingBuffer_SkipBytesWrite()

GWENHYWFAR_API void GWEN_RingBuffer_SkipBytesWrite ( GWEN_RINGBUFFER * rb,
uint32_t psize )

Adjusts the internal pointers and statistical data as if GWEN_RingBuffer_WriteBytes had been called. Please note that the size value given here MUST be <= the value returned by GWEN_RingBuffer_GetMaxUnsegmentedWrite !

◆ GWEN_RingBuffer_WriteByte()

GWENHYWFAR_API int GWEN_RingBuffer_WriteByte ( GWEN_RINGBUFFER * rb,
char c )

Writes a single byte to the ring buffer.

◆ GWEN_RingBuffer_WriteBytes()

GWENHYWFAR_API int GWEN_RingBuffer_WriteBytes ( GWEN_RINGBUFFER * rb,
const char * buffer,
uint32_t * size )

Writes the given bytes into the ring buffer.

Parameters
rbring buffer
bufferpointer to bytes to write
sizepointer to a variable that contains the number of bytes to write. Upon return this variable contains the number of bytes actually copied.