jaulib v1.3.0
Jau Support Library (C++, Java, ..)
|
Ring buffer interface, a.k.a circular buffer. More...
Public Member Functions | |
String | toString () |
Returns a short string representation incl. More... | |
void | dump (PrintStream stream, String prefix) |
Debug functionality - Dumps the contents of the internal array. More... | |
int | capacity () |
Returns the net capacity of this ring buffer. More... | |
void | clear () |
Resets the read and write position according to an empty ring buffer and set all ring buffer slots to null . More... | |
void | resetFull (T[] copyFrom) throws IllegalArgumentException |
Resets the read and write position according to a full ring buffer and fill all slots w/ elements of array copyFrom . More... | |
int | size () |
Returns the number of elements in this ring buffer. More... | |
int | getFreeSlots () |
Returns the number of free slots available to put. More... | |
boolean | isEmpty () |
Returns true if this ring buffer is empty, otherwise false. More... | |
boolean | isFull () |
Returns true if this ring buffer is full, otherwise false. More... | |
T | get () |
Dequeues the oldest enqueued element if available, otherwise null. More... | |
T | getBlocking () throws InterruptedException |
Dequeues the oldest enqueued element. More... | |
T | peek () |
Peeks the next element at the read position w/o modifying pointer, nor blocking. More... | |
T | peekBlocking () throws InterruptedException |
Peeks the next element at the read position w/o modifying pointer, but w/ blocking. More... | |
boolean | put (T e) |
Enqueues the given element. More... | |
void | putBlocking (T e) throws InterruptedException |
Enqueues the given element. More... | |
boolean | putSame (boolean blocking) throws InterruptedException |
Enqueues the same element at it's write position, if not full. More... | |
void | waitForFreeSlots (int count) throws InterruptedException |
Blocks until at least count free slots become available. More... | |
void | growEmptyBuffer (T[] newElements) throws IllegalStateException, IllegalArgumentException |
Grows an empty ring buffer, increasing it's capacity about the amount. More... | |
void | growFullBuffer (int amount) throws IllegalStateException, IllegalArgumentException |
Grows a full ring buffer, increasing it's capacity about the amount. More... | |
Ring buffer interface, a.k.a circular buffer.
Caller can chose whether to block until get / put is able to proceed or not.
Caller can chose whether to pass an empty array and clear references at get, or using a preset array for circular access of same objects.
Synchronization and hence thread safety details belong to the implementation.
Definition at line 43 of file Ringbuffer.java.
int org.jau.util.Ringbuffer< T >.capacity | ( | ) |
Returns the net capacity of this ring buffer.
Implemented in org.jau.util.LFRingbuffer< T >.
void org.jau.util.Ringbuffer< T >.clear | ( | ) |
Resets the read and write position according to an empty ring buffer and set all ring buffer slots to null
.
isEmpty()
will return true
after calling this method.
Implemented in org.jau.util.LFRingbuffer< T >.
void org.jau.util.Ringbuffer< T >.dump | ( | PrintStream | stream, |
String | prefix | ||
) |
Debug functionality - Dumps the contents of the internal array.
Implemented in org.jau.util.LFRingbuffer< T >.
T org.jau.util.Ringbuffer< T >.get | ( | ) |
Dequeues the oldest enqueued element if available, otherwise null.
The returned ring buffer slot will be set to null
to release the reference and move ownership to the caller.
Method is non blocking and returns immediately;.
Implemented in org.jau.util.LFRingbuffer< T >.
T org.jau.util.Ringbuffer< T >.getBlocking | ( | ) | throws InterruptedException |
Dequeues the oldest enqueued element.
The returned ring buffer slot will be set to null
to release the reference and move ownership to the caller.
Methods blocks until an element becomes available via put.
InterruptedException |
Implemented in org.jau.util.LFRingbuffer< T >.
int org.jau.util.Ringbuffer< T >.getFreeSlots | ( | ) |
void org.jau.util.Ringbuffer< T >.growEmptyBuffer | ( | T[] | newElements | ) | throws IllegalStateException, IllegalArgumentException |
Grows an empty ring buffer, increasing it's capacity about the amount.
Growing an empty ring buffer increases it's size about the amount, i.e. renders it not empty. The new elements are inserted at the read position, able to be read out via get()
etc.
newElements | array of new full elements the empty buffer shall grow about. |
IllegalStateException | if buffer is not empty |
IllegalArgumentException | if newElements is null |
Implemented in org.jau.util.LFRingbuffer< T >.
void org.jau.util.Ringbuffer< T >.growFullBuffer | ( | int | amount | ) | throws IllegalStateException, IllegalArgumentException |
Grows a full ring buffer, increasing it's capacity about the amount.
Growing a full ring buffer leaves the size intact, i.e. renders it not full. New null
elements are inserted at the write position, able to be written to via put(Object)
etc.
amount | the amount of elements the buffer shall grow about |
IllegalStateException | if buffer is not full |
IllegalArgumentException | if amount is < 0 |
Implemented in org.jau.util.LFRingbuffer< T >.
boolean org.jau.util.Ringbuffer< T >.isEmpty | ( | ) |
Returns true if this ring buffer is empty, otherwise false.
Implemented in org.jau.util.LFRingbuffer< T >.
boolean org.jau.util.Ringbuffer< T >.isFull | ( | ) |
Returns true if this ring buffer is full, otherwise false.
Implemented in org.jau.util.LFRingbuffer< T >.
T org.jau.util.Ringbuffer< T >.peek | ( | ) |
Peeks the next element at the read position w/o modifying pointer, nor blocking.
null
if empty, otherwise the element which would be read next. Implemented in org.jau.util.LFRingbuffer< T >.
T org.jau.util.Ringbuffer< T >.peekBlocking | ( | ) | throws InterruptedException |
Peeks the next element at the read position w/o modifying pointer, but w/ blocking.
null
if empty, otherwise the element which would be read next. Implemented in org.jau.util.LFRingbuffer< T >.
boolean org.jau.util.Ringbuffer< T >.put | ( | T | e | ) |
Enqueues the given element.
Returns true if successful, otherwise false in case buffer is full.
Method is non blocking and returns immediately;.
Implemented in org.jau.util.LFRingbuffer< T >.
void org.jau.util.Ringbuffer< T >.putBlocking | ( | T | e | ) | throws InterruptedException |
Enqueues the given element.
Method blocks until a free slot becomes available via get.
InterruptedException |
Implemented in org.jau.util.LFRingbuffer< T >.
boolean org.jau.util.Ringbuffer< T >.putSame | ( | boolean | blocking | ) | throws InterruptedException |
Enqueues the same element at it's write position, if not full.
Returns true if successful, otherwise false in case buffer is full.
If blocking
is true, method blocks until a free slot becomes available via get.
blocking | if true, wait until a free slot becomes available via get. |
InterruptedException |
Implemented in org.jau.util.LFRingbuffer< T >.
void org.jau.util.Ringbuffer< T >.resetFull | ( | T[] | copyFrom | ) | throws IllegalArgumentException |
Resets the read and write position according to a full ring buffer and fill all slots w/ elements of array copyFrom
.
Array's copyFrom
elements will be copied into the internal array, hence it's length must be equal to capacity()
.
copyFrom | Mandatory array w/ length capacity() to be copied into the internal array. |
IllegalArgumentException | if copyFrom is null . |
IllegalArgumentException | if copyFrom 's length is different from capacity() . |
Implemented in org.jau.util.LFRingbuffer< T >.
int org.jau.util.Ringbuffer< T >.size | ( | ) |
Returns the number of elements in this ring buffer.
Implemented in org.jau.util.LFRingbuffer< T >.
String org.jau.util.Ringbuffer< T >.toString | ( | ) |
Returns a short string representation incl.
size/capacity and internal r/w index (impl. dependent).
Implemented in org.jau.util.LFRingbuffer< T >.
void org.jau.util.Ringbuffer< T >.waitForFreeSlots | ( | int | count | ) | throws InterruptedException |
Blocks until at least count
free slots become available.
InterruptedException |
Implemented in org.jau.util.LFRingbuffer< T >.