allDataReadEventTriggeredAfterHalfClosure() — netty Function Reference
Architecture documentation for the allDataReadEventTriggeredAfterHalfClosure() function in SocketHalfClosedTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 0257caf2_49bb_c678_4b3a_f599308c0f78["allDataReadEventTriggeredAfterHalfClosure()"] 12fb37da_402f_660c_11c3_2383afda173c["SocketHalfClosedTest"] 0257caf2_49bb_c678_4b3a_f599308c0f78 -->|defined in| 12fb37da_402f_660c_11c3_2383afda173c c562440a_8a60_0e56_4204_87fa7867fe78["testAllDataReadEventTriggeredAfterHalfClosure()"] c562440a_8a60_0e56_4204_87fa7867fe78 -->|calls| 0257caf2_49bb_c678_4b3a_f599308c0f78 e10e4eef_7517_beb9_006a_70828f05ea78["channelActive()"] 0257caf2_49bb_c678_4b3a_f599308c0f78 -->|calls| e10e4eef_7517_beb9_006a_70828f05ea78 ed63ea02_ba7b_766c_f519_7df130ca8449["userEventTriggered()"] 0257caf2_49bb_c678_4b3a_f599308c0f78 -->|calls| ed63ea02_ba7b_766c_f519_7df130ca8449 9f0d148d_19fe_6f26_b8b9_17ac45fb4050["exceptionCaught()"] 0257caf2_49bb_c678_4b3a_f599308c0f78 -->|calls| 9f0d148d_19fe_6f26_b8b9_17ac45fb4050 style 0257caf2_49bb_c678_4b3a_f599308c0f78 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketHalfClosedTest.java lines 83–199
private void allDataReadEventTriggeredAfterHalfClosure(ServerBootstrap sb, Bootstrap cb) throws Throwable {
final int totalServerBytesWritten = 1;
final CountDownLatch clientReadAllDataLatch = new CountDownLatch(1);
final CountDownLatch clientHalfClosedLatch = new CountDownLatch(1);
final CountDownLatch clientHalfClosedAllBytesRead = new CountDownLatch(1);
final AtomicInteger clientReadCompletes = new AtomicInteger();
final AtomicInteger clientZeroDataReadCompletes = new AtomicInteger();
Channel serverChannel = null;
Channel clientChannel = null;
AtomicReference<Channel> serverChildChannel = new AtomicReference<>();
try {
cb.option(ChannelOption.ALLOW_HALF_CLOSURE, true)
.option(ChannelOption.AUTO_CLOSE, false)
.option(ChannelOption.AUTO_READ, false);
sb.option(ChannelOption.ALLOW_HALF_CLOSURE, true)
.option(ChannelOption.AUTO_CLOSE, false)
.childOption(ChannelOption.TCP_NODELAY, true);
sb.childHandler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) throws Exception {
serverChildChannel.set(ch);
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
ByteBuf buf = ctx.alloc().buffer(totalServerBytesWritten);
buf.writerIndex(buf.capacity());
ctx.writeAndFlush(buf);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
ctx.close();
}
});
}
});
// client.
cb.handler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) {
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
private int bytesRead;
private int bytesSinceReadComplete;
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
ByteBuf buf = (ByteBuf) msg;
bytesRead += buf.readableBytes();
bytesSinceReadComplete += buf.readableBytes();
buf.release();
}
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
if (evt == ChannelInputShutdownEvent.INSTANCE) {
clientHalfClosedLatch.countDown();
} else if (evt == ChannelInputShutdownReadComplete.INSTANCE) {
clientHalfClosedAllBytesRead.countDown();
ctx.close();
}
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
if (bytesSinceReadComplete == 0) {
clientZeroDataReadCompletes.incrementAndGet();
} else {
bytesSinceReadComplete = 0;
}
clientReadCompletes.incrementAndGet();
if (bytesRead == totalServerBytesWritten) {
// Bounce this through the event loop to make sure it happens after we're done
// with the read operation.
ch.eventLoop().execute(new Runnable() {
@Override
public void run() {
clientReadAllDataLatch.countDown();
}
Domain
Subdomains
Source
Frequently Asked Questions
What does allDataReadEventTriggeredAfterHalfClosure() do?
allDataReadEventTriggeredAfterHalfClosure() is a function in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketHalfClosedTest.java.
Where is allDataReadEventTriggeredAfterHalfClosure() defined?
allDataReadEventTriggeredAfterHalfClosure() is defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketHalfClosedTest.java at line 83.
What does allDataReadEventTriggeredAfterHalfClosure() call?
allDataReadEventTriggeredAfterHalfClosure() calls 3 function(s): channelActive, exceptionCaught, userEventTriggered.
What calls allDataReadEventTriggeredAfterHalfClosure()?
allDataReadEventTriggeredAfterHalfClosure() is called by 1 function(s): testAllDataReadEventTriggeredAfterHalfClosure.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free