AbstractNioMessageChannel Class — netty Architecture
Architecture documentation for the AbstractNioMessageChannel class in AbstractNioMessageChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 3260bc77_49cf_96c1_baa9_dd1de8d3603d["AbstractNioMessageChannel"] 7f2b3e34_70a9_a8fb_c486_84a47e9eb723["AbstractNioMessageChannel.java"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|defined in| 7f2b3e34_70a9_a8fb_c486_84a47e9eb723 417ea249_bbfd_0c66_4e3f_419410495b42["AbstractNioMessageChannel()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| 417ea249_bbfd_0c66_4e3f_419410495b42 28b976c2_c739_38a6_a259_098b2edbc3dc["AbstractNioUnsafe()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| 28b976c2_c739_38a6_a259_098b2edbc3dc 7759b8e8_1674_b51a_b172_960bf7b78ca9["doBeginRead()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| 7759b8e8_1674_b51a_b172_960bf7b78ca9 30f77b55_de75_10f5_d16f_00f319f9f672["continueReading()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| 30f77b55_de75_10f5_d16f_00f319f9f672 b39d151a_1b5e_b4c9_00be_5f3fea45bd5e["doWrite()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| b39d151a_1b5e_b4c9_00be_5f3fea45bd5e a859d149_53dc_be2e_3b04_8abd3f6e153e["continueOnWriteError()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| a859d149_53dc_be2e_3b04_8abd3f6e153e 41047431_2be4_b405_cf1b_592f5cad83f1["closeOnReadError()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| 41047431_2be4_b405_cf1b_592f5cad83f1 913da49c_1ef4_7f1a_749e_fe98a9bad805["doReadMessages()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| 913da49c_1ef4_7f1a_749e_fe98a9bad805 5ee130a6_7b77_fff4_473e_feb1f2786d0f["doWriteMessage()"] 3260bc77_49cf_96c1_baa9_dd1de8d3603d -->|method| 5ee130a6_7b77_fff4_473e_feb1f2786d0f
Relationship Graph
Source Code
transport/src/main/java/io/netty/channel/nio/AbstractNioMessageChannel.java lines 34–207
public abstract class AbstractNioMessageChannel extends AbstractNioChannel {
boolean inputShutdown;
/**
* @see AbstractNioChannel#AbstractNioChannel(Channel, SelectableChannel, int)
*/
protected AbstractNioMessageChannel(Channel parent, SelectableChannel ch, int readInterestOp) {
super(parent, ch, readInterestOp);
}
protected AbstractNioMessageChannel(Channel parent, SelectableChannel ch, NioIoOps readOps) {
super(parent, ch, readOps);
}
@Override
protected AbstractNioUnsafe newUnsafe() {
return new NioMessageUnsafe();
}
@Override
protected void doBeginRead() throws Exception {
if (inputShutdown) {
return;
}
super.doBeginRead();
}
protected boolean continueReading(RecvByteBufAllocator.Handle allocHandle) {
return allocHandle.continueReading();
}
private final class NioMessageUnsafe extends AbstractNioUnsafe {
private final List<Object> readBuf = new ArrayList<Object>();
@Override
public void read() {
assert eventLoop().inEventLoop();
final ChannelConfig config = config();
final ChannelPipeline pipeline = pipeline();
final RecvByteBufAllocator.Handle allocHandle = unsafe().recvBufAllocHandle();
allocHandle.reset(config);
boolean closed = false;
Throwable exception = null;
try {
try {
do {
int localRead = doReadMessages(readBuf);
if (localRead == 0) {
break;
}
if (localRead < 0) {
closed = true;
break;
}
allocHandle.incMessagesRead(localRead);
} while (continueReading(allocHandle));
} catch (Throwable t) {
exception = t;
}
int size = readBuf.size();
for (int i = 0; i < size; i ++) {
readPending = false;
pipeline.fireChannelRead(readBuf.get(i));
}
readBuf.clear();
allocHandle.readComplete();
pipeline.fireChannelReadComplete();
if (exception != null) {
closed = closeOnReadError(exception);
pipeline.fireExceptionCaught(exception);
}
if (closed) {
inputShutdown = true;
if (isOpen()) {
Source
Frequently Asked Questions
What is the AbstractNioMessageChannel class?
AbstractNioMessageChannel is a class in the netty codebase, defined in transport/src/main/java/io/netty/channel/nio/AbstractNioMessageChannel.java.
Where is AbstractNioMessageChannel defined?
AbstractNioMessageChannel is defined in transport/src/main/java/io/netty/channel/nio/AbstractNioMessageChannel.java at line 34.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free