recvDatagram() — netty Function Reference
Architecture documentation for the recvDatagram() function in QuicheQuicChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 7ed04228_8203_18ea_57b2_766b3ee23bb7["recvDatagram()"] 981bac79_4fa5_9e57_50c8_e12d0b35f6d4["QuicChannelUnsafe"] 7ed04228_8203_18ea_57b2_766b3ee23bb7 -->|defined in| 981bac79_4fa5_9e57_50c8_e12d0b35f6d4 4cae79d3_92ee_29bb_03d0_6a120cc97031["processReceived()"] 4cae79d3_92ee_29bb_03d0_6a120cc97031 -->|calls| 7ed04228_8203_18ea_57b2_766b3ee23bb7 0e1ca299_ed3d_8a6d_bf55_50ab173c29d7["recv()"] 0e1ca299_ed3d_8a6d_bf55_50ab173c29d7 -->|calls| 7ed04228_8203_18ea_57b2_766b3ee23bb7 3dcfc37a_37ed_432a_46ba_dfae500fd8f0["fireChannelReadCompleteIfNeeded()"] 7ed04228_8203_18ea_57b2_766b3ee23bb7 -->|calls| 3dcfc37a_37ed_432a_46ba_dfae500fd8f0 style 7ed04228_8203_18ea_57b2_766b3ee23bb7 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java lines 1867–1917
private void recvDatagram(QuicheQuicConnection conn) {
if (!supportsDatagram) {
return;
}
while (recvDatagramPending && datagramReadable && !conn.isFreed()) {
@SuppressWarnings("deprecation")
RecvByteBufAllocator.Handle recvHandle = recvBufAllocHandle();
recvHandle.reset(config());
int numMessagesRead = 0;
do {
long connAddr = conn.address();
int len = Quiche.quiche_conn_dgram_recv_front_len(connAddr);
if (len == Quiche.QUICHE_ERR_DONE) {
datagramReadable = false;
return;
}
ByteBuf datagramBuffer = alloc().directBuffer(len);
recvHandle.attemptedBytesRead(datagramBuffer.writableBytes());
int writerIndex = datagramBuffer.writerIndex();
long memoryAddress = Quiche.writerMemoryAddress(datagramBuffer);
int written = Quiche.quiche_conn_dgram_recv(connAddr,
memoryAddress, datagramBuffer.writableBytes());
if (written < 0) {
datagramBuffer.release();
if (written == Quiche.QUICHE_ERR_DONE) {
// We did consume all datagram packets.
datagramReadable = false;
break;
}
pipeline().fireExceptionCaught(Quiche.convertToException(written));
}
recvHandle.lastBytesRead(written);
recvHandle.incMessagesRead(1);
numMessagesRead++;
datagramBuffer.writerIndex(writerIndex + written);
recvDatagramPending = false;
fireChannelReadCompletePending = true;
pipeline().fireChannelRead(datagramBuffer);
} while (recvHandle.continueReading() && !conn.isFreed());
recvHandle.readComplete();
// Check if we produced any messages.
if (numMessagesRead > 0) {
fireChannelReadCompleteIfNeeded();
}
}
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does recvDatagram() do?
recvDatagram() is a function in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java.
Where is recvDatagram() defined?
recvDatagram() is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java at line 1867.
What does recvDatagram() call?
recvDatagram() calls 1 function(s): fireChannelReadCompleteIfNeeded.
What calls recvDatagram()?
recvDatagram() is called by 2 function(s): processReceived, recv.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free