com.gargoylesoftware.base.trace

Class BlockingCircularQueue

public class BlockingCircularQueue extends Object implements Serializable

Internal use only.

.

A circular queue with blocking semantics.

Version: $Revision: 1.7 $

Author: Mike Bowler

Field Summary
ObjectaddLock_
intback_
intcapacity_
intfront_
ObjectgetLock_
Object[]queue_
static longserialVersionUID
intsize_
Constructor Summary
BlockingCircularQueue()
Create the queue with a capacity of 20
BlockingCircularQueue(int capacity)
Create the queue with the specified capacity
Method Summary
booleanadd(Object object)
Add an object to the queue.
protected voidassertNotNull(String fieldName, Object fieldValue)
Verify that the specified value is not null.
voidclear()
Remove all items from the queue
intincrementPosition(int position)
Utility method to increment the position and roll back to zero once we hit the end.
booleanisEmpty()
Return true if the collection is empty.
Objectnext()
Return the next item in the queue.
intsize()
Return the number of objects currently in the collection.
StringtoString()
Return a string representation of this object.

Field Detail

addLock_

private final Object addLock_

back_

private int back_

capacity_

private final int capacity_

front_

private int front_

getLock_

private final Object getLock_

queue_

private final Object[] queue_

serialVersionUID

private static final long serialVersionUID

size_

private int size_

Constructor Detail

BlockingCircularQueue

public BlockingCircularQueue()
Create the queue with a capacity of 20

BlockingCircularQueue

public BlockingCircularQueue(int capacity)
Create the queue with the specified capacity

Parameters: capacity The size of the queue

Method Detail

add

public boolean add(Object object)
Add an object to the queue. If the collection is currently full then block until an object is removed.

Parameters: object The object to add.

Returns: true if the object was successfully added.

assertNotNull

protected final void assertNotNull(String fieldName, Object fieldValue)
Verify that the specified value is not null. If it is then throw an exception

Parameters: fieldName The name of the field to check fieldValue The value of the field to check

Throws: DetailedNullPointerException If fieldValue is null

clear

public void clear()
Remove all items from the queue

incrementPosition

private int incrementPosition(int position)
Utility method to increment the position and roll back to zero once we hit the end. Return the new position after the adjustment.

Parameters: position The position to increment

Returns: the new position

isEmpty

public boolean isEmpty()
Return true if the collection is empty.

Returns: true if the collection is empty.

next

public Object next()
Return the next item in the queue. The returned item is removed from the collection. If no objects are present then block until an object has been added.

Returns: The next item.

size

public int size()
Return the number of objects currently in the collection.

Returns: The object count.

toString

public String toString()
Return a string representation of this object.

Returns: a string representation of this object.