public class ArrayRingbuffer<T> extends Object implements Ringbuffer<T>
| Constructor and Description |
|---|
ArrayRingbuffer(int capacity) |
| Modifier and Type | Method and Description |
|---|---|
long |
add(T item)
Adds an item to the tail of the Ringbuffer.
|
void |
checkBlockableReadSequence(long readSequence)
Check if the sequence can be read from the ring buffer or if the sequence is of the next item to be added into the
ringbuffer.
|
void |
checkReadSequence(long sequence)
Check if the sequence can be read from the ring buffer.
|
long |
getCapacity()
Returns the capacity of this Ringbuffer.
|
long |
headSequence()
Returns the sequence of the head.
|
boolean |
isEmpty()
Is the ring buffer empty.
|
T |
read(long sequence)
Reads one item from the Ringbuffer.
|
void |
set(long seq,
T data)
Sets the item at the given sequence.
|
void |
setHeadSequence(long sequence)
Sets the head sequence.
|
void |
setTailSequence(long sequence)
Sets the tail sequence.
|
long |
size()
Returns number of items in the ringbuffer (meaning the number of items between the
Ringbuffer.headSequence() and
Ringbuffer.tailSequence()). |
long |
tailSequence()
Returns the sequence of the tail.
|
public long tailSequence()
RingbufferThe initial value of the tail is -1.
tailSequence in interface Ringbuffer<T>public void setTailSequence(long sequence)
RingbufferRingbuffer.headSequence() - 1.setTailSequence in interface Ringbuffer<T>sequence - the new tail sequencepublic long headSequence()
Ringbuffer
If the RingBuffer is empty, the head will be one more than the Ringbuffer.tailSequence().
The initial value of the head is 0 (1 more than tail).
headSequence in interface Ringbuffer<T>public void setHeadSequence(long sequence)
RingbufferRingbuffer.tailSequence() + 1setHeadSequence in interface Ringbuffer<T>sequence - The new head sequence.public long getCapacity()
RingbuffergetCapacity in interface Ringbuffer<T>public long size()
RingbufferRingbuffer.headSequence() and
Ringbuffer.tailSequence()).size in interface Ringbuffer<T>public boolean isEmpty()
RingbufferisEmpty in interface Ringbuffer<T>public long add(T item)
RingbufferThe returned value is the sequence of the added item. Using this sequence you can read the added item.
add in interface Ringbuffer<T>item - the item to add.public T read(long sequence)
RingbufferThis method is not destructive unlike e.g. a queue.take. So the same item can be read by multiple readers or it can be read multiple times by the same reader.
read in interface Ringbuffer<T>sequence - the sequence of the item to read.public void checkBlockableReadSequence(long readSequence)
RingbufferRingbuffer.tailSequence(), giving the
oportunity to block until the item is added into the ring buffer.checkBlockableReadSequence in interface Ringbuffer<T>readSequence - the sequence wanting to be readpublic void checkReadSequence(long sequence)
RingbuffercheckReadSequence in interface Ringbuffer<T>sequence - the sequence wanting to be readpublic void set(long seq,
T data)
Ringbufferset in interface Ringbuffer<T>seq - The target sequence.data - The data to be setCopyright © 2018 Hazelcast, Inc.. All Rights Reserved.