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那点事(三)Channel与Pipeline

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

Netty使用实例

相关文章:

  • 2021-08-21
  • 2021-10-29
  • 2021-06-29
  • 2021-06-14
  • 2021-10-17
  • 2022-01-09
  • 2021-06-27
  • 2021-07-22
猜你喜欢
  • 2021-11-13
  • 2022-12-23
  • 2022-01-20
  • 2022-12-23
  • 2021-12-09
  • 2021-09-30
  • 2022-01-30
相关资源
相似解决方案