E - type of elements in this queue, extending CDPQEntrypublic class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriBlockingQueue<E>
Extends CoDelBlockingQueue to add priority-based dropping functionality. Implements enhanced CoDel algorithm with configurable priority thresholds and per-priority statistics.
Provides priority-aware packet dropping where higher priority packets are protected from dropping during congestion events. Includes comprehensive statistics tracking and performance monitoring for different priority levels.
Input methods are overridden to add timestamps for delay calculation. Output methods implement AQM behavior with enhanced statistics tracking for priority-based operations.
| Modifier and Type | Field and Description |
|---|---|
(package private) static AtomicLong |
__id
debugging
|
static int |
DONT_DROP_PRIORITY
if priority is >= this, never drop
|
static int |
MIN_PRIORITY |
static String |
PROP_CODEL_INTERVAL |
static String |
PROP_CODEL_TARGET |
_context, _log, _name, DEFAULT_BACKLOG_SIZE, DEFAULT_MAX_SIZE, PROP_BACKLOG_SIZE, PROP_MAX_SIZE, RATES| Constructor and Description |
|---|
CoDelPriorityBlockingQueue(I2PAppContext ctx,
String name,
int initialCapacity) |
CoDelPriorityBlockingQueue(I2PAppContext ctx,
String name,
int initialCapacity,
int target,
int interval) |
| Modifier and Type | Method and Description |
|---|---|
void |
clear() |
int |
drainAllTo(Collection<? super E> c)
Drains all, without updating stats or dropping.
|
int |
drainTo(Collection<? super E> c)
Updates stats and possibly drops while draining.
|
int |
drainTo(Collection<? super E> c,
int maxElements)
Updates stats and possibly drops while draining.
|
boolean |
isBacklogged()
Has the head of the queue been waiting too long,
or is the queue too big?
|
E |
poll() |
E |
take() |
protected void |
timestamp(E o)
Assigns a unique sequence number to the element to maintain FIFO ordering
among elements of the same priority.
|
offeradd, comparator, contains, iterator, offer, peek, poll, put, remainingCapacity, remove, size, spliterator, toArray, toArray, toStringaddAll, element, removecontainsAll, isEmpty, removeAll, retainAllclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddAll, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, streamstatic final AtomicLong __id
public static final int DONT_DROP_PRIORITY
public static final int MIN_PRIORITY
public static final String PROP_CODEL_INTERVAL
public static final String PROP_CODEL_TARGET
public CoDelPriorityBlockingQueue(I2PAppContext ctx, String name, int initialCapacity)
public CoDelPriorityBlockingQueue(I2PAppContext ctx, String name, int initialCapacity, int target, int interval)
name - for statspublic void clear()
clear in interface Collection<E extends CDPQEntry>clear in class PriorityBlockingQueue<E extends CDPQEntry>public int drainAllTo(Collection<? super E> c)
public int drainTo(Collection<? super E> c)
drainTo in interface BlockingQueue<E extends CDPQEntry>drainTo in class PriorityBlockingQueue<E extends CDPQEntry>public int drainTo(Collection<? super E> c, int maxElements)
drainTo in interface BlockingQueue<E extends CDPQEntry>drainTo in class PriorityBlockingQueue<E extends CDPQEntry>public boolean isBacklogged()
isBacklogged in class PriBlockingQueue<E extends CDPQEntry>public E poll()
public E take() throws InterruptedException
take in interface BlockingQueue<E extends CDPQEntry>take in class PriorityBlockingQueue<E extends CDPQEntry>InterruptedExceptionprotected void timestamp(E o)
PriBlockingQueuetimestamp in class PriBlockingQueue<E extends CDPQEntry>o - the element to timestamp