DefaultPriorityQueue Class — netty Architecture
Architecture documentation for the DefaultPriorityQueue class in DefaultPriorityQueue.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 346d98e4_880c_f43c_7c90_38ef8a6cab37["DefaultPriorityQueue"] 0c2a759e_06e4_f6d7_2282_c60ea1aca0a3["DefaultPriorityQueue.java"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|defined in| 0c2a759e_06e4_f6d7_2282_c60ea1aca0a3 2261f1d7_a00a_b541_ed9a_4999607767a2["DefaultPriorityQueue()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 2261f1d7_a00a_b541_ed9a_4999607767a2 e94f0e2b_a064_6a66_35c6_46e458cd908d["size()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| e94f0e2b_a064_6a66_35c6_46e458cd908d 6ec1994f_8298_7cb5_a257_40bb200ee70d["isEmpty()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 6ec1994f_8298_7cb5_a257_40bb200ee70d 8e6d6a10_6d35_41b9_fd4a_3fe2ba605d38["contains()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 8e6d6a10_6d35_41b9_fd4a_3fe2ba605d38 00b4346e_2af9_7e60_93e3_2225804b3e4d["containsTyped()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 00b4346e_2af9_7e60_93e3_2225804b3e4d 7997a847_6645_2ac5_effd_e10570c2af20["clear()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 7997a847_6645_2ac5_effd_e10570c2af20 a830f39e_7c3d_2698_bd9a_f3734ee3a926["clearIgnoringIndexes()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| a830f39e_7c3d_2698_bd9a_f3734ee3a926 276f0f9e_51f5_c26e_cd5c_b7cbc2b6d3aa["offer()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 276f0f9e_51f5_c26e_cd5c_b7cbc2b6d3aa ab1e0ef0_05b2_1a78_973c_447f7b876c24["T()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| ab1e0ef0_05b2_1a78_973c_447f7b876c24 550f6a91_6598_70b6_e8bf_5a85b7bb682a["remove()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 550f6a91_6598_70b6_e8bf_5a85b7bb682a 6996c51b_528d_1b1c_08f8_4dfd8f453075["removeTyped()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 6996c51b_528d_1b1c_08f8_4dfd8f453075 49acf204_e2c9_dd83_a84a_8b98719246ca["priorityChanged()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| 49acf204_e2c9_dd83_a84a_8b98719246ca a4e4b4f4_3057_c816_c4af_5efd94fbc1a2["toArray()"] 346d98e4_880c_f43c_7c90_38ef8a6cab37 -->|method| a4e4b4f4_3057_c816_c4af_5efd94fbc1a2
Relationship Graph
Source Code
common/src/main/java/io/netty/util/internal/DefaultPriorityQueue.java lines 31–296
public final class DefaultPriorityQueue<T extends PriorityQueueNode> extends AbstractQueue<T>
implements PriorityQueue<T> {
private static final PriorityQueueNode[] EMPTY_ARRAY = new PriorityQueueNode[0];
private final Comparator<T> comparator;
private T[] queue;
private int size;
@SuppressWarnings("unchecked")
public DefaultPriorityQueue(Comparator<T> comparator, int initialSize) {
this.comparator = ObjectUtil.checkNotNull(comparator, "comparator");
queue = (T[]) (initialSize != 0 ? new PriorityQueueNode[initialSize] : EMPTY_ARRAY);
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public boolean contains(Object o) {
if (!(o instanceof PriorityQueueNode)) {
return false;
}
PriorityQueueNode node = (PriorityQueueNode) o;
return contains(node, node.priorityQueueIndex(this));
}
@Override
public boolean containsTyped(T node) {
return contains(node, node.priorityQueueIndex(this));
}
@Override
public void clear() {
for (int i = 0; i < size; ++i) {
T node = queue[i];
if (node != null) {
node.priorityQueueIndex(this, INDEX_NOT_IN_QUEUE);
queue[i] = null;
}
}
size = 0;
}
@Override
public void clearIgnoringIndexes() {
size = 0;
}
@Override
public boolean offer(T e) {
if (e.priorityQueueIndex(this) != INDEX_NOT_IN_QUEUE) {
throw new IllegalArgumentException("e.priorityQueueIndex(): " + e.priorityQueueIndex(this) +
" (expected: " + INDEX_NOT_IN_QUEUE + ") + e: " + e);
}
// Check that the array capacity is enough to hold values by doubling capacity.
if (size >= queue.length) {
// Use a policy which allows for a 0 initial capacity. Same policy as JDK's priority queue, double when
// "small", then grow by 50% when "large".
queue = Arrays.copyOf(queue, queue.length + ((queue.length < 64) ?
(queue.length + 2) :
(queue.length >>> 1)));
}
bubbleUp(size++, e);
return true;
}
@Override
public T poll() {
if (size == 0) {
return null;
}
T result = queue[0];
result.priorityQueueIndex(this, INDEX_NOT_IN_QUEUE);
Source
Frequently Asked Questions
What is the DefaultPriorityQueue class?
DefaultPriorityQueue is a class in the netty codebase, defined in common/src/main/java/io/netty/util/internal/DefaultPriorityQueue.java.
Where is DefaultPriorityQueue defined?
DefaultPriorityQueue is defined in common/src/main/java/io/netty/util/internal/DefaultPriorityQueue.java at line 31.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free