Home / Function/ recvmsg() — netty Function Reference

recvmsg() — netty Function Reference

Architecture documentation for the recvmsg() function in EpollDatagramChannel.java from the netty codebase.

Function java Buffer Search calls 4 called by 1

Entity Profile

Dependency Diagram

graph TD
  781125de_e972_9413_5a08_3062454df535["recvmsg()"]
  dab3c3bb_b3e2_f3b8_e8e0_37c99496afe9["EpollDatagramChannel"]
  781125de_e972_9413_5a08_3062454df535 -->|defined in| dab3c3bb_b3e2_f3b8_e8e0_37c99496afe9
  0ad4ff23_5654_f57a_1eda_1a36ffc34db3["epollInReady()"]
  0ad4ff23_5654_f57a_1eda_1a36ffc34db3 -->|calls| 781125de_e972_9413_5a08_3062454df535
  0a5c9ebd_9542_c721_3007_ef54d1145fdc["processPacket()"]
  781125de_e972_9413_5a08_3062454df535 -->|calls| 0a5c9ebd_9542_c721_3007_ef54d1145fdc
  da43f51f_6e9f_7e6c_396a_89c96150f970["addDatagramPacketToOut()"]
  781125de_e972_9413_5a08_3062454df535 -->|calls| da43f51f_6e9f_7e6c_396a_89c96150f970
  f06c6fde_39f9_620f_9dae_c0903795968e["processPacketList()"]
  781125de_e972_9413_5a08_3062454df535 -->|calls| f06c6fde_39f9_620f_9dae_c0903795968e
  0d502a62_d670_7011_9c8e_157dd8f2fb61["releaseAndRecycle()"]
  781125de_e972_9413_5a08_3062454df535 -->|calls| 0d502a62_d670_7011_9c8e_157dd8f2fb61
  style 781125de_e972_9413_5a08_3062454df535 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDatagramChannel.java lines 714–753

    private boolean recvmsg(EpollRecvByteAllocatorHandle allocHandle,
                            NativeDatagramPacketArray array, ByteBuf byteBuf) throws IOException {
        RecyclableArrayList datagramPackets = null;
        try {
            int writable = byteBuf.writableBytes();

            boolean added = array.addWritable(byteBuf, byteBuf.writerIndex(), writable);
            assert added;

            allocHandle.attemptedBytesRead(writable);

            NativeDatagramPacketArray.NativeDatagramPacket msg = array.packets()[0];

            int bytesReceived = socket.recvmsg(msg);
            if (!msg.hasSender()) {
                allocHandle.lastBytesRead(-1);
                return false;
            }
            byteBuf.writerIndex(bytesReceived);
            InetSocketAddress local = localAddress();
            DatagramPacket packet = msg.newDatagramPacket(byteBuf, local);
            if (!(packet instanceof io.netty.channel.unix.SegmentedDatagramPacket)) {
                processPacket(pipeline(), allocHandle, bytesReceived, packet);
            } else {
                // Its important that we process all received data out of the NativeDatagramPacketArray
                // before we call fireChannelRead(...). This is because the user may call flush()
                // in a channelRead(...) method and so may re-use the NativeDatagramPacketArray again.
                datagramPackets = RecyclableArrayList.newInstance();
                addDatagramPacketToOut(packet, datagramPackets);

                processPacketList(pipeline(), allocHandle, bytesReceived, datagramPackets);
                datagramPackets.recycle();
                datagramPackets = null;
            }

            return true;
        } finally {
            releaseAndRecycle(byteBuf, datagramPackets);
        }
    }

Domain

Subdomains

Called By

Frequently Asked Questions

What does recvmsg() do?
recvmsg() is a function in the netty codebase, defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDatagramChannel.java.
Where is recvmsg() defined?
recvmsg() is defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDatagramChannel.java at line 714.
What does recvmsg() call?
recvmsg() calls 4 function(s): addDatagramPacketToOut, processPacket, processPacketList, releaseAndRecycle.
What calls recvmsg()?
recvmsg() is called by 1 function(s): epollInReady.

Analyze Your Own Codebase

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

Try Supermodel Free