Home / Function/ doWriteMessage() — netty Function Reference

doWriteMessage() — netty Function Reference

Architecture documentation for the doWriteMessage() function in EpollDomainDatagramChannel.java from the netty codebase.

Function java Buffer Search called by 1

Entity Profile

Dependency Diagram

graph TD
  441f6996_462b_cce7_ce87_8bf40d88c1be["doWriteMessage()"]
  7202d69c_3d79_83a7_24dc_27b53c2f5789["EpollDomainDatagramChannel"]
  441f6996_462b_cce7_ce87_8bf40d88c1be -->|defined in| 7202d69c_3d79_83a7_24dc_27b53c2f5789
  3097a55a_0d29_2543_f00c_0bdde3cddd90["doWrite()"]
  3097a55a_0d29_2543_f00c_0bdde3cddd90 -->|calls| 441f6996_462b_cce7_ce87_8bf40d88c1be
  style 441f6996_462b_cce7_ce87_8bf40d88c1be fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDomainDatagramChannel.java lines 155–206

    private boolean doWriteMessage(Object msg) throws Exception {
        final ByteBuf data;
        DomainSocketAddress remoteAddress;
        if (msg instanceof AddressedEnvelope) {
            @SuppressWarnings("unchecked")
            AddressedEnvelope<ByteBuf, DomainSocketAddress> envelope =
                    (AddressedEnvelope<ByteBuf, DomainSocketAddress>) msg;
            data = envelope.content();
            remoteAddress = envelope.recipient();
        } else {
            data = (ByteBuf) msg;
            remoteAddress = null;
        }

        final int dataLen = data.readableBytes();
        if (dataLen == 0) {
            return true;
        }

        final long writtenBytes;
        if (data.hasMemoryAddress()) {
            long memoryAddress = data.memoryAddress();
            if (remoteAddress == null) {
                writtenBytes = socket.sendAddress(memoryAddress, data.readerIndex(), data.writerIndex());
            } else {
                writtenBytes = socket.sendToAddressDomainSocket(memoryAddress, data.readerIndex(), data.writerIndex(),
                        remoteAddress.path().getBytes(CharsetUtil.UTF_8));
            }
        } else 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) {
                writtenBytes = socket.writevAddresses(array.memoryAddress(0), cnt);
            } else {
                writtenBytes = socket.sendToAddressesDomainSocket(array.memoryAddress(0), cnt,
                        remoteAddress.path().getBytes(CharsetUtil.UTF_8));
            }
        } else {
            ByteBuffer nioData = data.internalNioBuffer(data.readerIndex(), data.readableBytes());
            if (remoteAddress == null) {
                writtenBytes = socket.send(nioData, nioData.position(), nioData.limit());
            } else {
                writtenBytes = socket.sendToDomainSocket(nioData, nioData.position(), nioData.limit(),
                        remoteAddress.path().getBytes(CharsetUtil.UTF_8));
            }
        }

        return writtenBytes > 0;
    }

Domain

Subdomains

Called By

Frequently Asked Questions

What does doWriteMessage() do?
doWriteMessage() is a function in the netty codebase, defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDomainDatagramChannel.java.
Where is doWriteMessage() defined?
doWriteMessage() is defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDomainDatagramChannel.java at line 155.
What calls doWriteMessage()?
doWriteMessage() is called by 1 function(s): doWrite.

Analyze Your Own Codebase

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

Try Supermodel Free