简介
ChannelPipeline作为处理流水线,ChannelHandler作为流水线上的一个处理器,其会先包装成ChannelHandlerContext添加到ChannelPipeline
组成
主要介绍相关的抽象
ChannelHandler
只提供handler的添加完,删除完,捕获异常方法
void handlerAdded(ChannelHandlerContext ctx) ;
void handlerRemoved(ChannelHandlerContext ctx);
void exceptionCaught(ChannelHandlerContext ctx, Throwable cause);
ChannelInboundHandler
提供io线程内channel的事件处理方法
void channelRegistered(ChannelHandlerContext ctx);
void channelUnregistered(ChannelHandlerContext ctx);
void channelActive(ChannelHandlerContext ctx);
void channelInactive(ChannelHandlerContext ctx);
void channelRead(ChannelHandlerContext ctx, Object msg);
void channelReadComplete(ChannelHandlerContext ctx);
void userEventTriggered(ChannelHandlerContext ctx, Object evt);
void channelWritabilityChanged(ChannelHandlerContext ctx);
void exceptionCaught(ChannelHandlerContext ctx, Throwable cause);
ChannelOutboundHandler
提供业务线程发起的绑定、连接、断开连接、读写,注销、关闭事件处理
void bind(ChannelHandlerContext ctx, SocketAddress localAddress, ChannelPromise promise);
void connect(ChannelHandlerContext ctx, SocketAddress remoteAddress,SocketAddress localAddress, ChannelPromise promise);
void disconnect(ChannelHandlerContext ctx, ChannelPromise promise);
void close(ChannelHandlerContext ctx, ChannelPromise promise);
void deregister(ChannelHandlerContext ctx, ChannelPromise promise);
void read(ChannelHandlerContext ctx);
void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise);
void flush(ChannelHandlerContext ctx);
ChannelInboundInvoker
发起ChannelInboundHandler
相关的事件
ChannelInboundInvoker fireChannelRegistered();
ChannelInboundInvoker fireChannelUnregistered();
ChannelInboundInvoker fireChannelActive();
ChannelInboundInvoker fireChannelInactive();
ChannelInboundInvoker fireExceptionCaught(Throwable cause);
ChannelInboundInvoker fireUserEventTriggered(Object event);
ChannelInboundInvoker fireChannelRead(Object msg);
ChannelInboundInvoker fireChannelReadComplete();
ChannelInboundInvoker fireChannelWritabilityChanged();
ChannelOutboundInvoker
发起ChannelOutboundHandler
相关事件,包含不需要结果和需要结果两类
ChannelFuture bind(SocketAddress localAddress);
ChannelFuture connect(SocketAddress remoteAddress);
ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress);
ChannelFuture disconnect();
ChannelFuture close();
ChannelFuture deregister();
ChannelFuture bind(SocketAddress localAddress, ChannelPromise promise);
ChannelFuture connect(SocketAddress remoteAddress, ChannelPromise promise);
ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise);
ChannelFuture disconnect(ChannelPromise promise);
ChannelFuture close(ChannelPromise promise);
ChannelFuture deregister(ChannelPromise promise);
ChannelOutboundInvoker read();
ChannelFuture write(Object msg);
ChannelFuture write(Object msg, ChannelPromise promise);
ChannelOutboundInvoker flush();
ChannelFuture writeAndFlush(Object msg, ChannelPromise promise);
ChannelFuture writeAndFlush(Object msg);
ChannelPromise newPromise();
ChannelProgressivePromise newProgressivePromise();
ChannelFuture newSucceededFuture();
ChannelFuture newFailedFuture(Throwable cause);
ChannelPromise voidPromise();
ChannelPipeline
:主要是管理ChannelHandler的注册,注销以及事件的触发处理,在inbound和outbound流上传播,会交由ChannelHandlerContext
来传播