recvmsg() — netty Function Reference
Architecture documentation for the recvmsg() function in EpollDatagramChannel.java from the netty codebase.
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
Source
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