38 #ifndef __RINGBUFFER_H__
39 #define __RINGBUFFER_H__
41 #include <QWaitCondition>
43 #include <QMutexLocker>
int mReadPosition
Read Positions in the RingBuffer (Tail)
Definition: RingBuffer.h:130
QMutex mMutex
Mutex to protect read and write operations.
Definition: RingBuffer.h:137
const int mNumSlots
Number of Slots.
Definition: RingBuffer.h:128
int mWritePosition
Write Position in the RingBuffer (Head)
Definition: RingBuffer.h:131
void overflowReset()
Resets the ring buffer for writes over-flows non-blocking.
Definition: RingBuffer.cpp:234
int8_t * mRingBuffer
8-bit array of data (1-byte)
Definition: RingBuffer.h:133
void debugDump() const
Helper method to debug, prints member variables to terminal.
Definition: RingBuffer.cpp:244
virtual void setMemoryInReadSlotWithLastReadSlot(int8_t *ptrToReadSlot)
Uses the last read slot to set the memory in the Read Slot.
Definition: RingBuffer.cpp:211
virtual ~RingBuffer()
The class destructor.
Definition: RingBuffer.cpp:93
int8_t * mLastReadSlot
Last slot read.
Definition: RingBuffer.h:134
qint8 int8_t
Typedef for unsigned long long int. This type is guaranteed to be 64-bit.
Definition: jacktrip_types.h:74
void insertSlotBlocking(const int8_t *ptrToSlot)
Insert a slot into the RingBuffer from ptrToSlot. This method will block until there's space in the b...
Definition: RingBuffer.cpp:103
const int mTotalSize
Total size of the mRingBuffer = mSlotSize*mNumSlotss.
Definition: RingBuffer.h:129
void underrunReset()
Resets the ring buffer for reads under-runs non-blocking.
Definition: RingBuffer.cpp:221
Provides a ring-buffer (or circular-buffer) that can be written to and read from asynchronously (bloc...
Definition: RingBuffer.h:55
QWaitCondition mBufferIsNotEmpty
Buffer not empty condition to monitor threads.
Definition: RingBuffer.h:139
int mFullSlots
Number of used (full) slots, in slot-size.
Definition: RingBuffer.h:132
void readSlotNonBlocking(int8_t *ptrToReadSlot)
Same as readSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:175
QWaitCondition mBufferIsNotFull
Buffer not full condition to monitor threads.
Definition: RingBuffer.h:138
RingBuffer(int SlotSize, int NumSlots)
The class constructor.
Definition: RingBuffer.cpp:50
void insertSlotNonBlocking(const int8_t *ptrToSlot)
Same as insertSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:149
virtual void setUnderrunReadSlot(int8_t *ptrToReadSlot)
Sets the memory in the Read Slot when uderrun occurs. By default, this sets it to 0...
Definition: RingBuffer.cpp:204
const int mSlotSize
The size of one slot in byes.
Definition: RingBuffer.h:127
void readSlotBlocking(int8_t *ptrToReadSlot)
Read a slot from the RingBuffer into ptrToReadSlot. This method will block until there's space in the...
Definition: RingBuffer.cpp:125