本文主要是介绍Netty源码剖析——ChannelHandler 篇(三十六),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ChannelHandler 作用及设计
public interface ChannelHandler {/*** Gets called after the {@link ChannelHandler} was added to the actual context and it's ready to handle events.
当把 ChannelHandler 添加到 pipeline 时被调用*/void handlerAdded(ChannelHandlerContext ctx) throws Exception;/*** Gets called after the {@link ChannelHandler} was removed from the actual context and it doesn't handle events* anymore./当从 pipeline 中移除时调用*/void handlerRemoved(ChannelHandlerContext ctx) throws Exception;/*** Gets called if a {@link Throwable} was thrown.** @deprecated is part of {@link ChannelInboundHandler}*/当处理过程中在 pipeline 发生异常时调用@Deprecatedvoid exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception;
}
ChannelHandler的作用就是处理/拦截IO事件,并将其转发给下一个ChannelHandler。Handler处理事件时分入站和出站的,两个方向的操作都是不同的,因此,Netty 定义了两个子接口继承ChannelHandler
- channelActive 用于当 Channel 处于活动状态时被调用
- channelRead 当从 Channel 读取数据时被调用等等方法。
- 程序员需要重写一些方法,当发生关注的事件,需要在方法中实现我们的业务逻辑,因为当事件发生时,Netty 会回调对应的方法。
ChannelOutboundHandler 出站事件接口
- bind方法,当请求将Channel绑定到本地地址时调用
- close方法,当请求关闭Channel时调用等等
- 出站操作都是一些连接和写出数据类似的方法
ChannelDuplexHandler 处理出站和入站事件
- ChannelDuplexHandler 间接实现了入站接口并直接实现了出站接口。
这篇关于Netty源码剖析——ChannelHandler 篇(三十六)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!