net.i2p.router.transport.udp
Class TimedWeightedPriorityMessageQueue
java.lang.Object
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.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
TimedWeightedPriorityMessageQueue
public TimedWeightedPriorityMessageQueue(RouterContext ctx,
int[] priorityLimits,
int[] weighting,
TimedWeightedPriorityMessageQueue.FailedListener lsnr)
- Build up a new queue
- Parameters:
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.
add
public void add(OutNetMessage message)
- Description copied from interface:
MessageQueue
- Add on a new message to the queue
- Specified by:
add
in interface MessageQueue
getNext
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
- Parameters:
blockUntil
- expiration, or -1 if indefinite
- Returns:
- message dequeued, or null if the queue was shut down
shutdown
public void shutdown()
choke
public void choke(Hash peer)
- Specified by:
choke
in interface OutboundMessageFragments.ActiveThrottle
unchoke
public void unchoke(Hash peer)
- Specified by:
unchoke
in interface OutboundMessageFragments.ActiveThrottle
isChoked
public boolean isChoked(Hash peer)
- Specified by:
isChoked
in interface OutboundMessageFragments.ActiveThrottle