net.i2p.router.util
Class PriBlockingQueue<E extends PQEntry>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractQueue<E>
          extended by java.util.concurrent.PriorityBlockingQueue<E>
              extended by net.i2p.router.util.PriBlockingQueue<E>
All Implemented Interfaces:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
Direct Known Subclasses:
CoDelPriorityBlockingQueue

public class PriBlockingQueue<E extends PQEntry>
extends PriorityBlockingQueue<E>

Priority Blocking Queue using methods in the entries, as definied in PQEntry, to store priority and sequence number, ensuring FIFO order within a priority. Input: add(), offer(), and put() are overridden to add a sequence number.

Since:
0.9.3
See Also:
Serialized Form

Field Summary
protected  I2PAppContext _context
           
protected  Log _log
           
protected  String _name
           
protected static int BACKLOG_SIZE
           
protected static int MAX_SIZE
           
protected static long[] RATES
           
 
Constructor Summary
PriBlockingQueue(I2PAppContext ctx, String name, int initialCapacity)
          Bounded queue with a hardcoded failsafe max size, except when using put(), which is unbounded.
 
Method Summary
 boolean add(E o)
          Deprecated. use offer(o)
 boolean isBacklogged()
          Is the queue too big?
 boolean offer(E o)
          Returns false if full
 boolean offer(E o, long timeout, TimeUnit unit)
          Deprecated. use offer(o)
 void put(E o)
          Deprecated. use offer(o)
protected  void timestamp(E o)
           
 
Methods inherited from class java.util.concurrent.PriorityBlockingQueue
clear, comparator, contains, drainTo, drainTo, iterator, peek, poll, poll, remainingCapacity, remove, size, take, toArray, toArray, toString
 
Methods inherited from class java.util.AbstractQueue
addAll, element, remove
 
Methods inherited from class java.util.AbstractCollection
containsAll, isEmpty, removeAll, retainAll
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Queue
element, remove
 
Methods inherited from interface java.util.Collection
addAll, containsAll, equals, hashCode, isEmpty, removeAll, retainAll
 

Field Detail

_context

protected final I2PAppContext _context

_log

protected final Log _log

_name

protected final String _name

RATES

protected static final long[] RATES

BACKLOG_SIZE

protected static final int BACKLOG_SIZE
See Also:
Constant Field Values

MAX_SIZE

protected static final int MAX_SIZE
See Also:
Constant Field Values
Constructor Detail

PriBlockingQueue

public PriBlockingQueue(I2PAppContext ctx,
                        String name,
                        int initialCapacity)
Bounded queue with a hardcoded failsafe max size, except when using put(), which is unbounded.

Method Detail

add

public boolean add(E o)
Deprecated. use offer(o)

OpenJDK add(o) calls offer(o), so use offer(o) to avoid dup stamping. Returns false if full

Specified by:
add in interface Collection<E extends PQEntry>
Specified by:
add in interface BlockingQueue<E extends PQEntry>
Specified by:
add in interface Queue<E extends PQEntry>
Overrides:
add in class PriorityBlockingQueue<E extends PQEntry>

offer

public boolean offer(E o)
Returns false if full

Specified by:
offer in interface BlockingQueue<E extends PQEntry>
Specified by:
offer in interface Queue<E extends PQEntry>
Overrides:
offer in class PriorityBlockingQueue<E extends PQEntry>

offer

public boolean offer(E o,
                     long timeout,
                     TimeUnit unit)
Deprecated. use offer(o)

OpenJDK offer(o, timeout, unit) calls offer(o), so use offer(o) to avoid dup stamping. Non blocking. Returns false if full.

Specified by:
offer in interface BlockingQueue<E extends PQEntry>
Overrides:
offer in class PriorityBlockingQueue<E extends PQEntry>
Parameters:
timeout - ignored
unit - ignored

put

public void put(E o)
Deprecated. use offer(o)

OpenJDK put(o) calls offer(o), so use offer(o) to avoid dup stamping. Non blocking. Does not add if full.

Specified by:
put in interface BlockingQueue<E extends PQEntry>
Overrides:
put in class PriorityBlockingQueue<E extends PQEntry>

isBacklogged

public boolean isBacklogged()
Is the queue too big?


timestamp

protected void timestamp(E o)