netty一些概念: ChannelHandler,ChannelHandlerContext,ChannelPipeline

参考:一起学Netty(四)之 ChannelHandler,ChannelHandlerContext,ChannelPipeline

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

netty一些概念: ChannelHandler,ChannelHandlerContext,ChannelPipeline

ChannelHandler

netty一些概念: ChannelHandler,ChannelHandlerContext,ChannelPipeline

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

netty一些概念: ChannelHandler,ChannelHandlerContext,ChannelPipeline

ChannelPipeline

netty一些概念: ChannelHandler,ChannelHandlerContext,ChannelPipeline

ChannelInboundInvoker 和 ChannelOutboundInvoker接口

public interface ChannelPipeline
        extends ChannelInboundInvoker, ChannelOutboundInvoker, Iterable<Entry<String, ChannelHandler>> {


public interface ChannelHandlerContext extends AttributeMap, ChannelInboundInvoker, ChannelOutboundInvoker {

public abstract class SimpleChannelInboundHandler<I> extends ChannelInboundHandlerAdapter {

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

netty一些概念: ChannelHandler,ChannelHandlerContext,ChannelPipeline
netty一些概念: ChannelHandler,ChannelHandlerContext,ChannelPipeline