Channel是Netty通訊的核心載體。
它包含了幾個重要組件Unsafe,DefaultChannelPipeline
其中Unsafe具體處理IO相關操作
DefaultChannelPipeline負責整個邏輯處理。
Netty對于不同協議,不同底層實現都有不同的實現。
這里我們找一個最常用的NioServerSocketChannel來梳理類繼承結構。
image.png
找幾塊代碼:
@Override
public ChannelFuture bind(SocketAddress localAddress, ChannelPromise promise) {
return pipeline.bind(localAddress, promise);
}
@Override
public ChannelFuture connect(SocketAddress remoteAddress, ChannelPromise promise) {
return pipeline.connect(remoteAddress, promise);
}
@Override
public ChannelFuture write(Object msg) {
return pipeline.write(msg);
}
@Override
public Channel read() {
pipeline.read();
return this;
}
可以看到大部分的功能都在Pipeline中實現,下一節具體分析下Pipeline。