testDatagramNoAutoRead() — netty Function Reference
Architecture documentation for the testDatagramNoAutoRead() function in QuicChannelDatagramTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 7c81fdec_3262_c605_8410_d9bd452a77be["testDatagramNoAutoRead()"] bcae6038_b6d0_d9ad_8a13_ee2026092191["QuicChannelDatagramTest"] 7c81fdec_3262_c605_8410_d9bd452a77be -->|defined in| bcae6038_b6d0_d9ad_8a13_ee2026092191 f0c29546_6ba5_20ac_1179_60b15eda445d["testDatagramNoAutoReadMaxMessagesPerRead1()"] f0c29546_6ba5_20ac_1179_60b15eda445d -->|calls| 7c81fdec_3262_c605_8410_d9bd452a77be cb0b3850_abd7_d3fe_4436_80bc91a43738["testDatagramNoAutoReadMaxMessagesPerRead3()"] cb0b3850_abd7_d3fe_4436_80bc91a43738 -->|calls| 7c81fdec_3262_c605_8410_d9bd452a77be a392d129_36c2_9118_c91c_b74daaed91b9["testDatagramNoAutoReadMaxMessagesPerRead1OutSideEventLoop()"] a392d129_36c2_9118_c91c_b74daaed91b9 -->|calls| 7c81fdec_3262_c605_8410_d9bd452a77be 35a3c3b9_7f71_ab7a_7691_6bb611ad978f["testDatagramNoAutoReadMaxMessagesPerRead3OutSideEventLoop()"] 35a3c3b9_7f71_ab7a_7691_6bb611ad978f -->|calls| 7c81fdec_3262_c605_8410_d9bd452a77be style 7c81fdec_3262_c605_8410_d9bd452a77be fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java lines 186–305
private void testDatagramNoAutoRead(Executor executor, int maxMessagesPerRead, boolean readLater) throws Throwable {
Promise<Void> serverPromise = ImmediateEventExecutor.INSTANCE.newPromise();
Promise<ByteBuf> clientPromise = ImmediateEventExecutor.INSTANCE.newPromise();
int numDatagrams = 5;
AtomicInteger serverReadCount = new AtomicInteger();
CountDownLatch latch = new CountDownLatch(numDatagrams);
QuicChannelValidationHandler serverHandler = new QuicChannelValidationHandler() {
private int readPerLoop;
@Override
public void channelActive(ChannelHandlerContext ctx) {
super.channelActive(ctx);
ctx.read();
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof ByteBuf) {
readPerLoop++;
ctx.writeAndFlush(msg).addListener(future -> {
if (future.isSuccess()) {
latch.countDown();
}
});
if (serverReadCount.incrementAndGet() == numDatagrams) {
serverPromise.trySuccess(null);
}
} else {
ctx.fireChannelRead(msg);
}
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
if (readPerLoop > maxMessagesPerRead) {
ctx.close();
serverPromise.tryFailure(new AssertionError(
"Read more then " + maxMessagesPerRead + " time per read loop"));
return;
}
readPerLoop = 0;
if (serverReadCount.get() < numDatagrams) {
if (readLater) {
ctx.executor().execute(ctx::read);
} else {
ctx.read();
}
}
}
};
Channel server = QuicTestUtils.newServer(QuicTestUtils.newQuicServerBuilder(executor)
.option(ChannelOption.AUTO_READ, false)
.option(ChannelOption.MAX_MESSAGES_PER_READ, maxMessagesPerRead)
.datagram(10, 10),
InsecureQuicTokenHandler.INSTANCE, serverHandler, new ChannelInboundHandlerAdapter());
InetSocketAddress address = (InetSocketAddress) server.localAddress();
Channel channel = QuicTestUtils.newClient(QuicTestUtils.newQuicClientBuilder(executor)
.datagram(10, 10));
AtomicInteger clientReadCount = new AtomicInteger();
QuicChannelValidationHandler clientHandler = new QuicChannelValidationHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof ByteBuf) {
if (clientReadCount.incrementAndGet() == numDatagrams) {
if (!clientPromise.trySuccess((ByteBuf) msg)) {
ReferenceCountUtil.release(msg);
}
} else {
ReferenceCountUtil.release(msg);
}
} else {
ctx.fireChannelRead(msg);
}
}
@Override
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does testDatagramNoAutoRead() do?
testDatagramNoAutoRead() is a function in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java.
Where is testDatagramNoAutoRead() defined?
testDatagramNoAutoRead() is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java at line 186.
What calls testDatagramNoAutoRead()?
testDatagramNoAutoRead() is called by 4 function(s): testDatagramNoAutoReadMaxMessagesPerRead1, testDatagramNoAutoReadMaxMessagesPerRead1OutSideEventLoop, testDatagramNoAutoReadMaxMessagesPerRead3, testDatagramNoAutoReadMaxMessagesPerRead3OutSideEventLoop.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free