testDatagram() — netty Function Reference
Architecture documentation for the testDatagram() function in QuicChannelDatagramTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 8794c99c_91b0_9c0b_9804_1303ad10da01["testDatagram()"] bcae6038_b6d0_d9ad_8a13_ee2026092191["QuicChannelDatagramTest"] 8794c99c_91b0_9c0b_9804_1303ad10da01 -->|defined in| bcae6038_b6d0_d9ad_8a13_ee2026092191 3a83b5d6_0de9_bbb3_7f2b_627c9aa77770["testDatagramFlushInChannelRead()"] 3a83b5d6_0de9_bbb3_7f2b_627c9aa77770 -->|calls| 8794c99c_91b0_9c0b_9804_1303ad10da01 aa1d315e_4c67_3437_5ca8_c05cba9b8d2f["testDatagramFlushInChannelReadComplete()"] aa1d315e_4c67_3437_5ca8_c05cba9b8d2f -->|calls| 8794c99c_91b0_9c0b_9804_1303ad10da01 style 8794c99c_91b0_9c0b_9804_1303ad10da01 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java lines 64–160
private void testDatagram(Executor executor, boolean flushInReadComplete) throws Throwable {
AtomicReference<QuicDatagramExtensionEvent> serverEventRef = new AtomicReference<>();
QuicChannelValidationHandler serverHandler = new QuicChannelValidationHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof ByteBuf) {
final ChannelFuture future;
if (!flushInReadComplete) {
future = ctx.writeAndFlush(msg);
} else {
future = ctx.write(msg);
}
future.addListener(ChannelFutureListener.CLOSE);
} else {
ctx.fireChannelRead(msg);
}
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
if (flushInReadComplete) {
ctx.flush();
}
}
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof QuicDatagramExtensionEvent) {
serverEventRef.set((QuicDatagramExtensionEvent) evt);
}
super.userEventTriggered(ctx, evt);
}
};
Channel server = QuicTestUtils.newServer(QuicTestUtils.newQuicServerBuilder(executor)
.datagram(10, 10),
InsecureQuicTokenHandler.INSTANCE, serverHandler , new ChannelInboundHandlerAdapter());
InetSocketAddress address = (InetSocketAddress) server.localAddress();
Promise<ByteBuf> receivedBuffer = ImmediateEventExecutor.INSTANCE.newPromise();
AtomicReference<QuicDatagramExtensionEvent> clientEventRef = new AtomicReference<>();
Channel channel = QuicTestUtils.newClient(QuicTestUtils.newQuicClientBuilder(executor)
.datagram(10, 10));
QuicChannelValidationHandler clientHandler = new QuicChannelValidationHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (!receivedBuffer.trySuccess((ByteBuf) msg)) {
ReferenceCountUtil.release(msg);
}
}
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof QuicDatagramExtensionEvent) {
clientEventRef.set((QuicDatagramExtensionEvent) evt);
}
super.userEventTriggered(ctx, evt);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
receivedBuffer.tryFailure(cause);
super.exceptionCaught(ctx, cause);
}
};
try {
QuicChannel quicChannel = QuicTestUtils.newQuicChannelBootstrap(channel)
.handler(clientHandler)
.remoteAddress(address)
.connect()
.get();
quicChannel.writeAndFlush(Unpooled.copiedBuffer(data)).sync();
ByteBuf buffer = receivedBuffer.get();
ByteBuf expected = Unpooled.wrappedBuffer(data);
assertEquals(expected, buffer);
buffer.release();
expected.release();
Domain
Subdomains
Source
Frequently Asked Questions
What does testDatagram() do?
testDatagram() is a function in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java.
Where is testDatagram() defined?
testDatagram() is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java at line 64.
What calls testDatagram()?
testDatagram() is called by 2 function(s): testDatagramFlushInChannelRead, testDatagramFlushInChannelReadComplete.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free