Home / Class/ DefaultFutureListeners Class — netty Architecture

DefaultFutureListeners Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  9e984bde_ac45_aa5a_17a8_2160de9ec1cd["DefaultFutureListeners"]
  86a70833_d7f5_001c_c1b7_a9215987fdf8["DefaultFutureListeners.java"]
  9e984bde_ac45_aa5a_17a8_2160de9ec1cd -->|defined in| 86a70833_d7f5_001c_c1b7_a9215987fdf8
  96406c83_9b24_9669_2211_fd5b254508a0["DefaultFutureListeners()"]
  9e984bde_ac45_aa5a_17a8_2160de9ec1cd -->|method| 96406c83_9b24_9669_2211_fd5b254508a0
  86f06b47_d086_645c_6bf2_e31bd17b3278["add()"]
  9e984bde_ac45_aa5a_17a8_2160de9ec1cd -->|method| 86f06b47_d086_645c_6bf2_e31bd17b3278
  e5496230_25d2_39f2_47bc_cc60f74ff55a["remove()"]
  9e984bde_ac45_aa5a_17a8_2160de9ec1cd -->|method| e5496230_25d2_39f2_47bc_cc60f74ff55a
  194dcf11_015a_6981_16ec_26502f8e9adb["listeners()"]
  9e984bde_ac45_aa5a_17a8_2160de9ec1cd -->|method| 194dcf11_015a_6981_16ec_26502f8e9adb
  6d41ccbc_6e4b_094e_5702_6ab4e51c8b3e["size()"]
  9e984bde_ac45_aa5a_17a8_2160de9ec1cd -->|method| 6d41ccbc_6e4b_094e_5702_6ab4e51c8b3e
  2970d059_0767_7015_40e4_94dd20b9d7c3["progressiveSize()"]
  9e984bde_ac45_aa5a_17a8_2160de9ec1cd -->|method| 2970d059_0767_7015_40e4_94dd20b9d7c3

Relationship Graph

Source Code

common/src/main/java/io/netty/util/concurrent/DefaultFutureListeners.java lines 20–86

final class DefaultFutureListeners {

    private GenericFutureListener<? extends Future<?>>[] listeners;
    private int size;
    private int progressiveSize; // the number of progressive listeners

    @SuppressWarnings("unchecked")
    DefaultFutureListeners(
            GenericFutureListener<? extends Future<?>> first, GenericFutureListener<? extends Future<?>> second) {
        listeners = new GenericFutureListener[2];
        listeners[0] = first;
        listeners[1] = second;
        size = 2;
        if (first instanceof GenericProgressiveFutureListener) {
            progressiveSize ++;
        }
        if (second instanceof GenericProgressiveFutureListener) {
            progressiveSize ++;
        }
    }

    public void add(GenericFutureListener<? extends Future<?>> l) {
        GenericFutureListener<? extends Future<?>>[] listeners = this.listeners;
        final int size = this.size;
        if (size == listeners.length) {
            this.listeners = listeners = Arrays.copyOf(listeners, size << 1);
        }
        listeners[size] = l;
        this.size = size + 1;

        if (l instanceof GenericProgressiveFutureListener) {
            progressiveSize ++;
        }
    }

    public void remove(GenericFutureListener<? extends Future<?>> l) {
        final GenericFutureListener<? extends Future<?>>[] listeners = this.listeners;
        int size = this.size;
        for (int i = 0; i < size; i ++) {
            if (listeners[i] == l) {
                int listenersToMove = size - i - 1;
                if (listenersToMove > 0) {
                    System.arraycopy(listeners, i + 1, listeners, i, listenersToMove);
                }
                listeners[-- size] = null;
                this.size = size;

                if (l instanceof GenericProgressiveFutureListener) {
                    progressiveSize --;
                }
                return;
            }
        }
    }

    public GenericFutureListener<? extends Future<?>>[] listeners() {
        return listeners;
    }

    public int size() {
        return size;
    }

    public int progressiveSize() {
        return progressiveSize;
    }
}

Frequently Asked Questions

What is the DefaultFutureListeners class?
DefaultFutureListeners is a class in the netty codebase, defined in common/src/main/java/io/netty/util/concurrent/DefaultFutureListeners.java.
Where is DefaultFutureListeners defined?
DefaultFutureListeners is defined in common/src/main/java/io/netty/util/concurrent/DefaultFutureListeners.java at line 20.

Analyze Your Own Codebase

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

Try Supermodel Free