我是靠谱客的博主 帅气唇膏,最近开发中收集的这篇文章主要介绍java netty handler之ChannelInboundHander与ChannelOutboundHandler,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前面的文章主要分析的是netty的事件驱动的部分,这篇文章就来看看其handler的定义吧,还是先来看看它的继承体系:

上面的是整个netty的handler最为顶层的几个接口的定义

首先是ChannelHandler,它定义的方法并不多,而且这些方法的用处都不是太多,不过这里有的比较重要的注释,也就是这个handerl是否可以共享

(1)可以共享,那么表示我们这个handler对象最终只需要实例化一次就可以,每一次执行这个handler的方法,其实都是用的同一个handler对象

(2)不可共享,可能对于每一个channel,我们都要实例化这个handler的一个对象将其加入到pipeline中,当handler类中定义了一些属性的话,那么就只有这样了。。。


在接下来,handler就被分成了两个种类,statehandler与operationhandler,顾名思义,基本上就能知道这两种handler有什么区别,其实在前面的文章中也有讲到这两种handler的区别,

(1)stathandler,这是在当前hander所属的channel发生了一些变化之后会调用该handler里面的相应的方法,例如当读到了数据,保存到了buffer中,那么将会从pipeline的从前到后开始找stathandler,调用其inboundBufferUpdated方法来处理这些读进来的数据。。另外在整个pipeline中始终有一个定义的stathandler在最末尾,如果数据最后不得不由它来处理,那么默认的动作就是抛弃这些数据。。。当然还有很多其他的方法,例如当前的channel被注册到了eventloop等。。。


(2)operationhandler,这是一个对外的handler类型,其中最为重要的方法就是flush方法,它用于将buffer中的数据发送出去。。在整个pipeline中的第一个handler将会是一个默认的operationhandler,一般情况下数据都会由它来flush出去,另外它还包含了一个unsafe对象,它就是在当前所属channel的unsafe对象,例如此handler的flush方法,说白了就是调用这个unsafe对象的flush方法,将数据发送出去。。。


最后两个接口,inboundhandler继承自stathandler,outboundhandler继承自operationhandler,都还算比较的简单吧,无非就是多了各自多了一个方法,inboundhandler多了一个newInboundBuffer方法,用于创建buffer存放读取的数据,outboundhandler多了一个newOutboundBuffer方法。。。


好了,几个顶层的接口就算差不多这样了,,,接下来可以开始分析一下几个adapter什么的了。。。。

最后

以上就是帅气唇膏为你收集整理的java netty handler之ChannelInboundHander与ChannelOutboundHandler的全部内容,希望文章能够帮你解决java netty handler之ChannelInboundHander与ChannelOutboundHandler所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部