Channel
channel provides a user
1. 当前channel的状态(open?connected?)
2. channel的配置参数
3. IO操作
4. ChannelPipeline这个ChannelPipeline可以处理所有与这个Channel相关联的的IO事件或者IO请求
所有的IO操作都是异步的
:I/O的调用都可以立刻返回,可以获取到ChannelFuture对象实例,这个对象会通知你IO操作的结果是成功/失败/取消
Channels是有父子关系的
:
Channel释放资源
:使用完Channel后,调用close() or close(ChannelPromise)来释放所有的资源,确保所有的资源以正确的方式被释放
ChannlePipeline
pipeline的创建
:每一个Channel都有自己的pipeline,当一个channel被创建的时候,channelpipeline也被自动创建
io时间在pipeline中如何流动
:一个IO时间要么被ChannelInboundHandler要么被ChannelOutboundHandler处理,并通过调用ChannelHandlerContext的fireChannelRead(Object)方法或者write(Object)方法传递给离这个handler最近的下一个handler
ChannelHandler
作用
:处理IO事件,将处理后的IO事件传递给下一个Handler,这些Handler都存在一个叫做ChannelPipeline的对象中
ChannelHandlerContext
作用
1. 每一个ChannelHandlerContext装有一个ChannelHandler对象
2. ChannelHandler通过ChannelHandlerContext与ChannelPipeline对象进行沟通
3. 通过ChannelHandlerContext对象,ChannelHandler对象可以将IO事件传递给上下游
4. 通过ChannelHandlerContext对象,ChannelHandler对象可以动态的修改pipeline
5. 通过ChannelHandlerContext对象,ChannelHandler对象可以通过AttributeKeys存储属于这个ChannelHandler对象的信息