Home / Class/ IntPriorityQueue Class — netty Architecture

IntPriorityQueue Class — netty Architecture

Architecture documentation for the IntPriorityQueue class in IntPriorityQueue.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  ad6253f6_6b27_9dab_4272_9c668d433d62["IntPriorityQueue"]
  c68be9a0_b4b2_69a0_567a_a77c4224ea23["IntPriorityQueue.java"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|defined in| c68be9a0_b4b2_69a0_567a_a77c4224ea23
  b7ae3c0f_bbce_7e04_af93_b881ca553ef7["offer()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| b7ae3c0f_bbce_7e04_af93_b881ca553ef7
  f2b8e419_4f1e_c5f8_1707_8a1ce3cbfc34["remove()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| f2b8e419_4f1e_c5f8_1707_8a1ce3cbfc34
  36c402fd_2250_da8a_c7b8_d456e263b6ce["peek()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| 36c402fd_2250_da8a_c7b8_d456e263b6ce
  631c7a78_a97a_92c7_9c70_ba1d86ff15bc["poll()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| 631c7a78_a97a_92c7_9c70_ba1d86ff15bc
  a06ed807_3bdc_9294_1800_a8192fba38b5["isEmpty()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| a06ed807_3bdc_9294_1800_a8192fba38b5
  f939e54c_fd1f_0380_742b_3ea857d85fdc["lift()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| f939e54c_fd1f_0380_742b_3ea857d85fdc
  38079c4c_340d_7168_bf66_3429ac5a58fd["sink()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| 38079c4c_340d_7168_bf66_3429ac5a58fd
  f8d6bc00_3a80_475b_7977_901a2046e948["subord()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| f8d6bc00_3a80_475b_7977_901a2046e948
  af0a88f6_ffad_b27a_c956_98c92ebd697a["swap()"]
  ad6253f6_6b27_9dab_4272_9c668d433d62 -->|method| af0a88f6_ffad_b27a_c956_98c92ebd697a

Relationship Graph

Source Code

buffer/src/main/java/io/netty/buffer/IntPriorityQueue.java lines 24–107

final class IntPriorityQueue {
    public static final int NO_VALUE = -1;
    private int[] array = new int[9];
    private int size;

    public void offer(int handle) {
        if (handle == NO_VALUE) {
            throw new IllegalArgumentException("The NO_VALUE (" + NO_VALUE + ") cannot be added to the queue.");
        }
        size++;
        if (size == array.length) {
            // Grow queue capacity.
            array = Arrays.copyOf(array, 1 + (array.length - 1) * 2);
        }
        array[size] = handle;
        lift(size);
    }

    public void remove(int value) {
        for (int i = 1; i <= size; i++) {
            if (array[i] == value) {
                array[i] = array[size--];
                lift(i);
                sink(i);
                return;
            }
        }
    }

    public int peek() {
        if (size == 0) {
            return NO_VALUE;
        }
        return array[1];
    }

    public int poll() {
        if (size == 0) {
            return NO_VALUE;
        }
        int val = array[1];
        array[1] = array[size];
        array[size] = 0;
        size--;
        sink(1);
        return val;
    }

    public boolean isEmpty() {
        return size == 0;
    }

    private void lift(int index) {
        int parentIndex;
        while (index > 1 && subord(parentIndex = index >> 1, index)) {
            swap(index, parentIndex);
            index = parentIndex;
        }
    }

    private void sink(int index) {
        int child;
        while ((child = index << 1) <= size) {
            if (child < size && subord(child, child + 1)) {
                child++;
            }
            if (!subord(index, child)) {
                break;
            }
            swap(index, child);
            index = child;
        }
    }

    private boolean subord(int a, int b) {
        return array[a] > array[b];
    }

    private void swap(int a, int b) {
        int value = array[a];
        array[a] = array[b];

Frequently Asked Questions

What is the IntPriorityQueue class?
IntPriorityQueue is a class in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/IntPriorityQueue.java.
Where is IntPriorityQueue defined?
IntPriorityQueue is defined in buffer/src/main/java/io/netty/buffer/IntPriorityQueue.java at line 24.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free