Class TimedWeightedPriorityMessageQueue

  extended by net.i2p.router.transport.udp.TimedWeightedPriorityMessageQueue
All Implemented Interfaces:
MessageQueue, OutboundMessageFragments.ActiveThrottle

public class TimedWeightedPriorityMessageQueue
extends java.lang.Object
implements MessageQueue, OutboundMessageFragments.ActiveThrottle

Weighted priority queue implementation for the outbound messages, coupled with code to fail messages that expire. WARNING - UNUSED since See comments in and mtn history ca. 2006-02-19

Nested Class Summary
static interface TimedWeightedPriorityMessageQueue.FailedListener
Constructor Summary
TimedWeightedPriorityMessageQueue(RouterContext ctx, int[] priorityLimits, int[] weighting, TimedWeightedPriorityMessageQueue.FailedListener lsnr)
          Build up a new queue
Method Summary
 void add(OutNetMessage message)
          Add on a new message to the queue
 void choke(Hash peer)
 OutNetMessage getNext(long blockUntil)
          Grab the next message out of the next queue.
 boolean isChoked(Hash peer)
 void shutdown()
 void unchoke(Hash peer)
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


public TimedWeightedPriorityMessageQueue(RouterContext ctx,
                                         int[] priorityLimits,
                                         int[] weighting,
                                         TimedWeightedPriorityMessageQueue.FailedListener lsnr)
Build up a new queue

priorityLimits - ordered breakpoint for the different message priorities, with the lowest limit first.
weighting - how much to prefer a given priority grouping. specifically, this means how many messages in this queue should be pulled off in a row before moving on to the next.
Method Detail


public void add(OutNetMessage message)
Description copied from interface: MessageQueue
Add on a new message to the queue

Specified by:
add in interface MessageQueue


public OutNetMessage getNext(long blockUntil)
Grab the next message out of the next queue. This only advances the _nextQueue var after pushing _weighting[currentQueue] messages or the queue is empty. This call blocks until either a message becomes available or the queue is shut down.

Specified by:
getNext in interface MessageQueue
blockUntil - expiration, or -1 if indefinite
message dequeued, or null if the queue was shut down


public void shutdown()


public void choke(Hash peer)
Specified by:
choke in interface OutboundMessageFragments.ActiveThrottle


public void unchoke(Hash peer)
Specified by:
unchoke in interface OutboundMessageFragments.ActiveThrottle


public boolean isChoked(Hash peer)
Specified by:
isChoked in interface OutboundMessageFragments.ActiveThrottle