Package net.i2p.router.transport.udp
Class TimedWeightedPriorityMessageQueue
- java.lang.Object
-
- net.i2p.router.transport.udp.TimedWeightedPriorityMessageQueue
-
- All Implemented Interfaces:
MessageQueue
,OutboundMessageFragments.ActiveThrottle
class TimedWeightedPriorityMessageQueue extends Object implements MessageQueue, OutboundMessageFragments.ActiveThrottle
Weighted priority queue implementation for the outbound messages, coupled with code to fail messages that expire. WARNING - UNUSED since 0.6.1.11 See comments in DummyThrottle.java and mtn history ca. 2006-02-19
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
TimedWeightedPriorityMessageQueue.FailedListener
-
Constructor Summary
Constructors Constructor Description TimedWeightedPriorityMessageQueue(RouterContext ctx, int[] priorityLimits, int[] weighting, TimedWeightedPriorityMessageQueue.FailedListener lsnr)
Build up a new queue
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(OutNetMessage message)
Add on a new message to the queuevoid
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)
-
-
-
Constructor Detail
-
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.
-
-
Method Detail
-
add
public void add(OutNetMessage message)
Description copied from interface:MessageQueue
Add on a new message to the queue- Specified by:
add
in interfaceMessageQueue
-
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 interfaceMessageQueue
- 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 interfaceOutboundMessageFragments.ActiveThrottle
-
unchoke
public void unchoke(Hash peer)
- Specified by:
unchoke
in interfaceOutboundMessageFragments.ActiveThrottle
-
isChoked
public boolean isChoked(Hash peer)
- Specified by:
isChoked
in interfaceOutboundMessageFragments.ActiveThrottle
-
-