Package com.wavefront.agent.queueing
Class ConcurrentQueueFile
- java.lang.Object
-
- com.wavefront.agent.queueing.ConcurrentQueueFile
-
- All Implemented Interfaces:
QueueFile
,Closeable
,AutoCloseable
,Iterable<byte[]>
public class ConcurrentQueueFile extends Object implements QueueFile
A thread-safe wrapper forQueueFile
. This version assumes that operations on the head and on the tail of the queue are mutually exclusive and should be synchronized. For a more fine-grained implementation, seeConcurrentShardedQueueFile
that maintains separate locks on the head and the tail of the queue.- Author:
- [email protected]
-
-
Constructor Summary
Constructors Constructor Description ConcurrentQueueFile(QueueFile delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(byte[] data, int offset, int count)
Adds an element to the end of the queue.long
availableBytes()
Returns the number of bytes available for adding new tasks without growing the file.void
clear()
Clears this queue.void
close()
@NotNull Iterator<byte[]>
iterator()
@org.jetbrains.annotations.Nullable byte[]
peek()
Reads the eldest element.void
remove()
Removes the eldest element.int
size()
Returns the number of elements in this queue.long
storageBytes()
Returns the storage size (on-disk file size) in bytes.long
usedBytes()
Returns the number of bytes used for data.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
ConcurrentQueueFile
public ConcurrentQueueFile(QueueFile delegate)
-
-
Method Detail
-
add
public void add(byte[] data, int offset, int count) throws IOException
Description copied from interface:QueueFile
Adds an element to the end of the queue.- Specified by:
add
in interfaceQueueFile
- Parameters:
data
- to copy bytes fromoffset
- to start from in buffercount
- number of bytes to copy- Throws:
IOException
-
clear
public void clear() throws IOException
Description copied from interface:QueueFile
Clears this queue. Truncates the file to the initial size.- Specified by:
clear
in interfaceQueueFile
- Throws:
IOException
-
peek
@Nullable public @org.jetbrains.annotations.Nullable byte[] peek() throws IOException
Description copied from interface:QueueFile
Reads the eldest element. Returns null if the queue is empty.- Specified by:
peek
in interfaceQueueFile
- Returns:
- the eldest element.
- Throws:
IOException
-
remove
public void remove() throws IOException
Description copied from interface:QueueFile
Removes the eldest element.- Specified by:
remove
in interfaceQueueFile
- Throws:
IOException
-
size
public int size()
Description copied from interface:QueueFile
Returns the number of elements in this queue.
-
storageBytes
public long storageBytes()
Description copied from interface:QueueFile
Returns the storage size (on-disk file size) in bytes.- Specified by:
storageBytes
in interfaceQueueFile
- Returns:
- file size in bytes.
-
usedBytes
public long usedBytes()
Description copied from interface:QueueFile
Returns the number of bytes used for data.
-
availableBytes
public long availableBytes()
Description copied from interface:QueueFile
Returns the number of bytes available for adding new tasks without growing the file.- Specified by:
availableBytes
in interfaceQueueFile
- Returns:
- bytes available.
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-
-