Home / Class/ DefaultPriorityQueue Class — netty Architecture

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);

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