Home / Function/ close() — netty Function Reference

close() — netty Function Reference

Architecture documentation for the close() function in ChannelOutboundBuffer.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  8ef6f00a_5bc8_18eb_6487_6a2e90cfab2f["close()"]
  509b1bc5_7cdc_9ee4_03d9_31eb2203d807["ChannelOutboundBuffer"]
  8ef6f00a_5bc8_18eb_6487_6a2e90cfab2f -->|defined in| 509b1bc5_7cdc_9ee4_03d9_31eb2203d807
  928bd697_ccc9_ee43_394e_d0dcda4f9909["isEmpty()"]
  8ef6f00a_5bc8_18eb_6487_6a2e90cfab2f -->|calls| 928bd697_ccc9_ee43_394e_d0dcda4f9909
  9442861d_ae43_c572_95ea_8e92ddbb709f["decrementPendingOutboundBytes()"]
  8ef6f00a_5bc8_18eb_6487_6a2e90cfab2f -->|calls| 9442861d_ae43_c572_95ea_8e92ddbb709f
  388cda2b_b8f5_fdd6_cc01_b98d77fd3613["safeFail()"]
  8ef6f00a_5bc8_18eb_6487_6a2e90cfab2f -->|calls| 388cda2b_b8f5_fdd6_cc01_b98d77fd3613
  99a6a55c_40f3_d958_c218_8834dd310e16["clearNioBuffers()"]
  8ef6f00a_5bc8_18eb_6487_6a2e90cfab2f -->|calls| 99a6a55c_40f3_d958_c218_8834dd310e16
  style 8ef6f00a_5bc8_18eb_6487_6a2e90cfab2f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport/src/main/java/io/netty/channel/ChannelOutboundBuffer.java lines 699–738

    void close(final Throwable cause, final boolean allowChannelOpen) {
        if (inFail) {
            channel.eventLoop().execute(new Runnable() {
                @Override
                public void run() {
                    close(cause, allowChannelOpen);
                }
            });
            return;
        }

        inFail = true;

        if (!allowChannelOpen && channel.isOpen()) {
            throw new IllegalStateException("close() must be invoked after the channel is closed.");
        }

        if (!isEmpty()) {
            throw new IllegalStateException("close() must be invoked after all flushed writes are handled.");
        }

        // Release all unflushed messages.
        try {
            Entry e = unflushedEntry;
            while (e != null) {
                // Just decrease; do not trigger any events via decrementPendingOutboundBytes()
                int size = e.pendingSize;
                TOTAL_PENDING_SIZE_UPDATER.addAndGet(this, -size);

                if (!e.cancelled) {
                    ReferenceCountUtil.safeRelease(e.msg);
                    safeFail(e.promise, cause);
                }
                e = e.unguardedRecycleAndGetNext();
            }
        } finally {
            inFail = false;
        }
        clearNioBuffers();
    }

Domain

Subdomains

Frequently Asked Questions

What does close() do?
close() is a function in the netty codebase, defined in transport/src/main/java/io/netty/channel/ChannelOutboundBuffer.java.
Where is close() defined?
close() is defined in transport/src/main/java/io/netty/channel/ChannelOutboundBuffer.java at line 699.
What does close() call?
close() calls 4 function(s): clearNioBuffers, decrementPendingOutboundBytes, isEmpty, safeFail.

Analyze Your Own Codebase

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

Try Supermodel Free