Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第1张图片

channel对象代表的是一个与客户端连接的对象 

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第2张图片

 查看channel的doc说明:

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第3张图片

 

 下面这个是通过mac系统将上面的转换过来的(其实没啥区别,只是下面的看起来比较直观):

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第4张图片

它是一个连接到network socket 以及完成io操作的读、写、连接和绑定。

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第5张图片

提供的功能

channel当前的状态(open 或者connected)

channel的配置参数(receive buffer size)

提供了I/O操作(例如:read ,write,connet,bind)

与当前channel所关联的channelPipeline处理所有的I/O事件和请求。

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第6张图片

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第7张图片

所有的IO操作都是异步的

这就意味着一些IO调用将会被立即返回,但是不能保证这整个调用已经完成。

相反,它会返回一个ChannelFuture实例来通知你请求的IO操作有没有成功、失败或者取消。(ChannelFuture所拿到的返回状态是一个最终的状态)

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第8张图片

 channel是可继承的

channel可以有一个父类,就比如说:一个ServerSocketChannel是SocketChannel父类,通过调用parent()方法返回ServerSocketChannel。

从这里可以看到channel是一个具体层次结构的类。

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第9张图片

 释放资源:

但现在位置Channel分析结束,我们开始分析ChannelPipeline.

我们要考虑到,ChannelPipeline肯定和Channel是有联系的,根据我们之前对netty的分析,我们可以知道ChannelPipeline肯定在Channel里面。

我们可以看到RegFuture.channel()之后直接获取了对象,说明channel是在initAndRegister()里面被创建出来的。

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第10张图片

它是通过channelFactory工厂来创建的实例

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第11张图片

我们进来之后发现我们创建的就是NioServerSocketChannel.class

 Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第12张图片

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第13张图片

 总结:其实NioServerSocketChannel本身就是一个channel对象,它通过反射的方式来生成channel对象。

然后赋值给了它

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第14张图片

然后就传入到init(channel)中:

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第15张图片

它这里面主要就是处理器ServerBootstrapAcceptor的创建

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第16张图片

 不过我们现在的重点是分析pipeline

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第17张图片

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第18张图片 

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第19张图片 

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第20张图片 

Netty的深入浅出--55.Netty中Channel与ChannelPipeline的分析_第21张图片 

 

你可能感兴趣的:(Netty网络编程,Netty的深入浅出)