博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
netty一些概念: ChannelHandler,ChannelHandlerContext,ChannelPipeline
阅读量:4093 次
发布时间:2019-05-25

本文共 2731 字,大约阅读时间需要 9 分钟。

参考:

ChannelHandler,ChannelHandlerContext,ChannelPipeline这三者的关系很特别,相辅相成,一个ChannelPipeline中可以有多个ChannelHandler实例,而每一个ChannelHandler实例与ChannelPipeline之间的桥梁就是ChannelHandlerContext实例,如图所示:

在这里插入图片描述

ChannelHandler

在这里插入图片描述

ChannelHandler

public interface ChannelHandler {
void handlerAdded(ChannelHandlerContext var1) throws Exception; void handlerRemoved(ChannelHandlerContext var1) throws Exception; void exceptionCaught(ChannelHandlerContext var1, Throwable var2) throws Exception; @Inherited @Documented @Target({
ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Sharable {
}}

ChannelInboundHandler

public interface ChannelInboundHandler extends ChannelHandler {
void channelRegistered(ChannelHandlerContext var1) throws Exception; void channelUnregistered(ChannelHandlerContext var1) throws Exception; void channelActive(ChannelHandlerContext var1) throws Exception; void channelInactive(ChannelHandlerContext var1) throws Exception; void channelRead(ChannelHandlerContext var1, Object var2) throws Exception; void channelReadComplete(ChannelHandlerContext var1) throws Exception; void userEventTriggered(ChannelHandlerContext var1, Object var2) throws Exception; void channelWritabilityChanged(ChannelHandlerContext var1) throws Exception; void exceptionCaught(ChannelHandlerContext var1, Throwable var2) throws Exception;}

ChannelOutboundHandler

public interface ChannelOutboundHandler extends ChannelHandler {
void bind(ChannelHandlerContext var1, SocketAddress var2, ChannelPromise var3) throws Exception; void connect(ChannelHandlerContext var1, SocketAddress var2, SocketAddress var3, ChannelPromise var4) throws Exception; void disconnect(ChannelHandlerContext var1, ChannelPromise var2) throws Exception; void close(ChannelHandlerContext var1, ChannelPromise var2) throws Exception; void deregister(ChannelHandlerContext var1, ChannelPromise var2) throws Exception; void read(ChannelHandlerContext var1) throws Exception; void write(ChannelHandlerContext var1, Object var2, ChannelPromise var3) throws Exception; void flush(ChannelHandlerContext var1) throws Exception;}

ChannelHandlerContext

在这里插入图片描述

ChannelPipeline

在这里插入图片描述

ChannelInboundInvoker 和 ChannelOutboundInvoker接口

public interface ChannelPipeline        extends ChannelInboundInvoker, ChannelOutboundInvoker, Iterable
> {
public interface ChannelHandlerContext extends AttributeMap, ChannelInboundInvoker, ChannelOutboundInvoker {
public abstract class SimpleChannelInboundHandler
extends ChannelInboundHandlerAdapter {

ChannelHandlerContext 和 ChannelPipeline都继承了ChannelInboundInvoker 和 ChannelOutboundInvoker接口

在这里插入图片描述

在这里插入图片描述

转载地址:http://wpnii.baihongyu.com/

你可能感兴趣的文章
【前端性能优化】雅虎34条优化军规
查看>>
mpvue 报错 Expected indentation of 2 spaces but found 4解决办法
查看>>
mpvue小程序报错:cannot read property ‘init‘of undefined
查看>>
【css】CSS 如何画两边是半圆的长方形?
查看>>
【vue】render 函数如何在iview的表格中循环渲染
查看>>
vue 实现12个月的平铺式日历插件
查看>>
【iview 避坑记录】iview的switch组件使用字符串控制开关
查看>>
BFC 的原理浅析
查看>>
vue 中后台管理系统的权限管理实现逻辑记录
查看>>
JS中document对象和window对象有什么区别
查看>>
vue-draggable 实现拖拽效果的使用方法
查看>>
在 vue 中使用 echarts 的详细步骤
查看>>
前端干货|两种方式给数字加上千分位分隔符
查看>>
没事聊聊本地存储-web storage
查看>>
本地缓存与浏览器缓存的区别
查看>>
什么是防抖、节流?怎么实现它们?
查看>>
前端常见经典布局一:粘连布局
查看>>
CommonJS Browserify模块化教程
查看>>
AMD:RequireJS模块化教程
查看>>
CMD:SeaJS模块化教程
查看>>