org.jgroups.util
Class SizeBoundedQueue

java.lang.Object
  extended by org.jgroups.util.SizeBoundedQueue
All Implemented Interfaces:
java.lang.Iterable, java.util.Collection, java.util.concurrent.BlockingQueue, java.util.Queue

public class SizeBoundedQueue
extends java.lang.Object
implements java.util.concurrent.BlockingQueue

Queue as described in http://jira.jboss.com/jira/browse/JGRP-376. However, this queue only works with TP.IncomingPacket elements. The queue maintains a max number of bytes and a total of all of the messages in the internal queues. Whenever a message is added, we increment the total by the length of the message. When a message is removed, we decrement the total. Removal blocks until a message is available, addition blocks if the max size has been exceeded, until there is enough space to add another message. Note that the max size should always be greater than the size of the largest message to be received, otherwise an additon would always fail because msg.length > max size !
Access patterns: this instance is always accessed by the thread pool only ! Concurrent take() or poll() methods, but only a single thread at a time calls put() !

Note that as of Jan 2008, this class has not yet been used.

Version:
$Id: SizeBoundedQueue.java,v 1.4 2008/02/04 13:43:14 belaban Exp $
Author:
Bela Ban

Constructor Summary
SizeBoundedQueue()
           
 
Method Summary
 boolean add(java.lang.Object o)
           
 boolean addAll(java.util.Collection c)
           
 void clear()
           
 boolean contains(java.lang.Object o)
           
 boolean containsAll(java.util.Collection c)
           
 int drainTo(java.util.Collection c)
           
 int drainTo(java.util.Collection c, int maxElements)
           
 java.lang.Object element()
           
 boolean isEmpty()
           
 java.util.Iterator iterator()
           
 boolean offer(java.lang.Object o)
           
 boolean offer(java.lang.Object o, long timeout, java.util.concurrent.TimeUnit unit)
           
 java.lang.Object peek()
           
 java.lang.Object poll()
           
 java.lang.Object poll(long timeout, java.util.concurrent.TimeUnit unit)
           
 void put(java.lang.Object o)
           
 int remainingCapacity()
           
 java.lang.Object remove()
           
 boolean remove(java.lang.Object o)
           
 boolean removeAll(java.util.Collection c)
           
 boolean retainAll(java.util.Collection c)
           
 int size()
           
 java.lang.Object take()
           
 java.lang.Object[] toArray()
           
 java.lang.Object[] toArray(java.lang.Object[] a)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Collection
equals, hashCode
 

Constructor Detail

SizeBoundedQueue

public SizeBoundedQueue()
Method Detail

add

public boolean add(java.lang.Object o)
Specified by:
add in interface java.util.Collection
Specified by:
add in interface java.util.concurrent.BlockingQueue

drainTo

public int drainTo(java.util.Collection c)
Specified by:
drainTo in interface java.util.concurrent.BlockingQueue

drainTo

public int drainTo(java.util.Collection c,
                   int maxElements)
Specified by:
drainTo in interface java.util.concurrent.BlockingQueue

offer

public boolean offer(java.lang.Object o)
Specified by:
offer in interface java.util.concurrent.BlockingQueue
Specified by:
offer in interface java.util.Queue

offer

public boolean offer(java.lang.Object o,
                     long timeout,
                     java.util.concurrent.TimeUnit unit)
              throws java.lang.InterruptedException
Specified by:
offer in interface java.util.concurrent.BlockingQueue
Throws:
java.lang.InterruptedException

poll

public java.lang.Object poll(long timeout,
                             java.util.concurrent.TimeUnit unit)
                      throws java.lang.InterruptedException
Specified by:
poll in interface java.util.concurrent.BlockingQueue
Throws:
java.lang.InterruptedException

put

public void put(java.lang.Object o)
         throws java.lang.InterruptedException
Specified by:
put in interface java.util.concurrent.BlockingQueue
Throws:
java.lang.InterruptedException

remainingCapacity

public int remainingCapacity()
Specified by:
remainingCapacity in interface java.util.concurrent.BlockingQueue

take

public java.lang.Object take()
                      throws java.lang.InterruptedException
Specified by:
take in interface java.util.concurrent.BlockingQueue
Throws:
java.lang.InterruptedException

element

public java.lang.Object element()
Specified by:
element in interface java.util.Queue

peek

public java.lang.Object peek()
Specified by:
peek in interface java.util.Queue

poll

public java.lang.Object poll()
Specified by:
poll in interface java.util.Queue

remove

public java.lang.Object remove()
Specified by:
remove in interface java.util.Queue

addAll

public boolean addAll(java.util.Collection c)
Specified by:
addAll in interface java.util.Collection

clear

public void clear()
Specified by:
clear in interface java.util.Collection

contains

public boolean contains(java.lang.Object o)
Specified by:
contains in interface java.util.Collection

containsAll

public boolean containsAll(java.util.Collection c)
Specified by:
containsAll in interface java.util.Collection

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Collection

iterator

public java.util.Iterator iterator()
Specified by:
iterator in interface java.lang.Iterable
Specified by:
iterator in interface java.util.Collection

remove

public boolean remove(java.lang.Object o)
Specified by:
remove in interface java.util.Collection

removeAll

public boolean removeAll(java.util.Collection c)
Specified by:
removeAll in interface java.util.Collection

retainAll

public boolean retainAll(java.util.Collection c)
Specified by:
retainAll in interface java.util.Collection

size

public int size()
Specified by:
size in interface java.util.Collection

toArray

public java.lang.Object[] toArray()
Specified by:
toArray in interface java.util.Collection

toArray

public java.lang.Object[] toArray(java.lang.Object[] a)
Specified by:
toArray in interface java.util.Collection


Copyright © 1998-2009 Bela Ban / Red Hat. All Rights Reserved.