Home / Function/ doWriteOrSendBytes() — netty Function Reference

doWriteOrSendBytes() — netty Function Reference

Architecture documentation for the doWriteOrSendBytes() function in AbstractEpollChannel.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  f2f77a4d_7359_b0c8_8dbd_1e06b977dfee["doWriteOrSendBytes()"]
  6a1b1970_2eef_b28f_03e7_8b11508deece["AbstractEpollChannel"]
  f2f77a4d_7359_b0c8_8dbd_1e06b977dfee -->|defined in| 6a1b1970_2eef_b28f_03e7_8b11508deece
  style f2f77a4d_7359_b0c8_8dbd_1e06b977dfee fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport-classes-epoll/src/main/java/io/netty/channel/epoll/AbstractEpollChannel.java lines 401–432

    final long doWriteOrSendBytes(ByteBuf data, InetSocketAddress remoteAddress, boolean fastOpen)
            throws IOException {
        assert !(fastOpen && remoteAddress == null) : "fastOpen requires a remote address";
        if (data.hasMemoryAddress()) {
            long memoryAddress = data.memoryAddress();
            if (remoteAddress == null) {
                return socket.sendAddress(memoryAddress, data.readerIndex(), data.writerIndex());
            }
            return socket.sendToAddress(memoryAddress, data.readerIndex(), data.writerIndex(),
                    remoteAddress.getAddress(), remoteAddress.getPort(), fastOpen);
        }

        if (data.nioBufferCount() > 1) {
            IovArray array = ((NativeArrays) registration.attachment()).cleanIovArray();
            array.add(data, data.readerIndex(), data.readableBytes());
            int cnt = array.count();
            assert cnt != 0;

            if (remoteAddress == null) {
                return socket.writevAddresses(array.memoryAddress(0), cnt);
            }
            return socket.sendToAddresses(array.memoryAddress(0), cnt,
                    remoteAddress.getAddress(), remoteAddress.getPort(), fastOpen);
        }

        ByteBuffer nioData = data.internalNioBuffer(data.readerIndex(), data.readableBytes());
        if (remoteAddress == null) {
            return socket.send(nioData, nioData.position(), nioData.limit());
        }
        return socket.sendTo(nioData, nioData.position(), nioData.limit(),
                remoteAddress.getAddress(), remoteAddress.getPort(), fastOpen);
    }

Domain

Subdomains

Frequently Asked Questions

What does doWriteOrSendBytes() do?
doWriteOrSendBytes() is a function in the netty codebase, defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/AbstractEpollChannel.java.
Where is doWriteOrSendBytes() defined?
doWriteOrSendBytes() is defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/AbstractEpollChannel.java at line 401.

Analyze Your Own Codebase

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

Try Supermodel Free