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, seeConcurrentShardedQueueFilethat 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 voidadd(byte[] data, int offset, int count)Adds an element to the end of the queue.longavailableBytes()Returns the number of bytes available for adding new tasks without growing the file.voidclear()Clears this queue.voidclose()@NotNull Iterator<byte[]>iterator()@org.jetbrains.annotations.Nullable byte[]peek()Reads the eldest element.voidremove()Removes the eldest element.intsize()Returns the number of elements in this queue.longstorageBytes()Returns the storage size (on-disk file size) in bytes.longusedBytes()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 IOExceptionDescription copied from interface:QueueFileAdds an element to the end of the queue.- Specified by:
addin interfaceQueueFile- Parameters:
data- to copy bytes fromoffset- to start from in buffercount- number of bytes to copy- Throws:
IOException
-
clear
public void clear() throws IOExceptionDescription copied from interface:QueueFileClears this queue. Truncates the file to the initial size.- Specified by:
clearin interfaceQueueFile- Throws:
IOException
-
peek
@Nullable public @org.jetbrains.annotations.Nullable byte[] peek() throws IOExceptionDescription copied from interface:QueueFileReads the eldest element. Returns null if the queue is empty.- Specified by:
peekin interfaceQueueFile- Returns:
- the eldest element.
- Throws:
IOException
-
remove
public void remove() throws IOExceptionDescription copied from interface:QueueFileRemoves the eldest element.- Specified by:
removein interfaceQueueFile- Throws:
IOException
-
size
public int size()
Description copied from interface:QueueFileReturns the number of elements in this queue.
-
storageBytes
public long storageBytes()
Description copied from interface:QueueFileReturns the storage size (on-disk file size) in bytes.- Specified by:
storageBytesin interfaceQueueFile- Returns:
- file size in bytes.
-
usedBytes
public long usedBytes()
Description copied from interface:QueueFileReturns the number of bytes used for data.
-
availableBytes
public long availableBytes()
Description copied from interface:QueueFileReturns the number of bytes available for adding new tasks without growing the file.- Specified by:
availableBytesin interfaceQueueFile- Returns:
- bytes available.
-
close
public void close() throws IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
-