netty概念

Netty的ChannelFuture
在Netty中的所有的I/O操作都是异步执行的,这就意味着任何一个I/O操作会立刻返回,不保证在调用结束的时候操作会执行完成。因此,会返回一个ChannelFuture的实例,通过这个实例可以获取当前I/O操作的状态。ChannelFuture为完成或未完成状态。

 channel  channelhandler channelHandlerContex channelPipelin  channelEvent  

Channel是通讯的载体
ChannelHandler负责Channel中的逻辑处理。 
ChannelPipeline为ChannelHandler的容器:
一个Channel包含一个ChannelPipeline,所有ChannelHandler都会注册到ChannelPipeline中,并按顺序组织起来。

ChannelEvent是数据或者状态的载体,例如传输的数据对应MessageEvent,状态的改变对应ChannelStateEvent

当对Channel进行操作时,会产生一个ChannelEvent,并发送到ChannelPipeline。ChannelPipeline会选择一个ChannelHandler进行处理。这个ChannelHandler处理之后,可能会产生新的ChannelEvent,并流转到下一个ChannelHandler。

ChannelSink万能Handler 重要方法ChannelSink.eventSunk,可以接受任意ChannelEvent。
 
 ChannelHandlerContext这个接口。
ChannelHandlerContext保存了Handler相关的的上下文信息。
 DefaultChannelHandlerContext,则是对ChannelHandler的一个包装。一个DefaultChannelHandlerContext内部,除了包含一个ChannelHandler,还保存了"next"和"prev"两个指针,从而形成一个双向链表。

 在DefaultChannelPipeline中,我们看到的是对DefaultChannelHandlerContext的引用,而不是对ChannelHandler的直接引用。这里包含"head"和"tail"两个引用,分别指向链表的头和尾。而name2ctx则是一个按名字索引DefaultChannelHandlerContext用户的一个map,主要在按照名称删除或者添加ChannelHandler时使用。
 

Netty那点事(一)概述
Netty那点事(二)Netty中的buffer

Netty那点事(三)Channel与Pipeline

Netty那点事(四)Netty与Reactor模式

Netty使用实例

posted @ 2016-01-07 13:20  假程序猿  阅读(318)  评论(0编辑  收藏  举报