Home / Class/ EpollRecvByteAllocatorHandle Class — netty Architecture

EpollRecvByteAllocatorHandle Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  91ea2771_32d4_d38b_ffb1_4fc382694d1e["EpollRecvByteAllocatorHandle"]
  0a20b53b_8348_87c4_cf97_ad9b48f679fb["EpollRecvByteAllocatorHandle.java"]
  91ea2771_32d4_d38b_ffb1_4fc382694d1e -->|defined in| 0a20b53b_8348_87c4_cf97_ad9b48f679fb
  745dc442_b879_fae9_c2d5_2bb9e5fbbf08["EpollRecvByteAllocatorHandle()"]
  91ea2771_32d4_d38b_ffb1_4fc382694d1e -->|method| 745dc442_b879_fae9_c2d5_2bb9e5fbbf08
  99e785e3_302d_49dd_176d_d988c6794b8c["receivedRdHup()"]
  91ea2771_32d4_d38b_ffb1_4fc382694d1e -->|method| 99e785e3_302d_49dd_176d_d988c6794b8c
  713a51f0_728d_9467_bc3b_8faba049e9f2["isReceivedRdHup()"]
  91ea2771_32d4_d38b_ffb1_4fc382694d1e -->|method| 713a51f0_728d_9467_bc3b_8faba049e9f2
  ddb0cdff_ef6e_8c7d_cfcd_905a1308b5cc["maybeMoreDataToRead()"]
  91ea2771_32d4_d38b_ffb1_4fc382694d1e -->|method| ddb0cdff_ef6e_8c7d_cfcd_905a1308b5cc
  d6295002_5fb6_0dbf_f4e3_c556e34aca58["ByteBuf()"]
  91ea2771_32d4_d38b_ffb1_4fc382694d1e -->|method| d6295002_5fb6_0dbf_f4e3_c556e34aca58
  988fb0fa_f791_b0d0_74f9_a4ae21eece56["continueReading()"]
  91ea2771_32d4_d38b_ffb1_4fc382694d1e -->|method| 988fb0fa_f791_b0d0_74f9_a4ae21eece56

Relationship Graph

Source Code

transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollRecvByteAllocatorHandle.java lines 25–69

class EpollRecvByteAllocatorHandle extends DelegatingHandle implements ExtendedHandle {
    private final PreferredDirectByteBufAllocator preferredDirectByteBufAllocator =
            new PreferredDirectByteBufAllocator();
    private final UncheckedBooleanSupplier defaultMaybeMoreDataSupplier = new UncheckedBooleanSupplier() {
        @Override
        public boolean get() {
            return maybeMoreDataToRead();
        }
    };
    private boolean receivedRdHup;

    EpollRecvByteAllocatorHandle(ExtendedHandle handle) {
        super(handle);
    }

    final void receivedRdHup() {
        receivedRdHup = true;
    }

    final boolean isReceivedRdHup() {
        return receivedRdHup;
    }

    boolean maybeMoreDataToRead() {
        return lastBytesRead() == attemptedBytesRead();
    }

    @Override
    public final ByteBuf allocate(ByteBufAllocator alloc) {
        // We need to ensure we always allocate a direct ByteBuf as we can only use a direct buffer to read via JNI.
        preferredDirectByteBufAllocator.updateAllocator(alloc);
        return delegate().allocate(preferredDirectByteBufAllocator);
    }

    @Override
    public final boolean continueReading(UncheckedBooleanSupplier maybeMoreDataSupplier) {
        return isReceivedRdHup() || ((ExtendedHandle) delegate()).continueReading(maybeMoreDataSupplier);
    }

    @Override
    public final boolean continueReading() {
        // We must override the supplier which determines if there maybe more data to read.
        return continueReading(defaultMaybeMoreDataSupplier);
    }
}

Frequently Asked Questions

What is the EpollRecvByteAllocatorHandle class?
EpollRecvByteAllocatorHandle is a class in the netty codebase, defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollRecvByteAllocatorHandle.java.
Where is EpollRecvByteAllocatorHandle defined?
EpollRecvByteAllocatorHandle is defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollRecvByteAllocatorHandle.java at line 25.

Analyze Your Own Codebase

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

Try Supermodel Free