Package io.grpc.netty

Class AbstractNettyHandler

  • All Implemented Interfaces:
    io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler, io.netty.channel.ChannelOutboundHandler, io.netty.handler.codec.http2.Http2LifecycleManager
    Direct Known Subclasses:
    NettyClientHandler, NettyServerHandler

    abstract class AbstractNettyHandler
    extends GrpcHttp2ConnectionHandler
    Base class for all Netty gRPC handlers. This class standardizes exception handling (always shutdown the connection) as well as sending the initial connection window at startup.
    • Field Detail

      • GRACEFUL_SHUTDOWN_NO_TIMEOUT

        private static final long GRACEFUL_SHUTDOWN_NO_TIMEOUT
        See Also:
        Constant Field Values
      • initialConnectionWindow

        private final int initialConnectionWindow
      • autoTuneFlowControlOn

        private boolean autoTuneFlowControlOn
      • ctx

        private io.netty.channel.ChannelHandlerContext ctx
      • initialWindowSent

        private boolean initialWindowSent
      • ticker

        private final com.google.common.base.Ticker ticker
    • Constructor Detail

      • AbstractNettyHandler

        AbstractNettyHandler​(io.netty.channel.ChannelPromise channelUnused,
                             io.netty.handler.codec.http2.Http2ConnectionDecoder decoder,
                             io.netty.handler.codec.http2.Http2ConnectionEncoder encoder,
                             io.netty.handler.codec.http2.Http2Settings initialSettings,
                             ChannelLogger negotiationLogger,
                             boolean autoFlowControl,
                             AbstractNettyHandler.PingLimiter pingLimiter,
                             com.google.common.base.Ticker ticker)
    • Method Detail

      • handlerAdded

        public void handlerAdded​(io.netty.channel.ChannelHandlerContext ctx)
                          throws java.lang.Exception
        Specified by:
        handlerAdded in interface io.netty.channel.ChannelHandler
        Overrides:
        handlerAdded in class io.netty.handler.codec.http2.Http2ConnectionHandler
        Throws:
        java.lang.Exception
      • channelActive

        public void channelActive​(io.netty.channel.ChannelHandlerContext ctx)
                           throws java.lang.Exception
        Specified by:
        channelActive in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        channelActive in class io.netty.handler.codec.http2.Http2ConnectionHandler
        Throws:
        java.lang.Exception
      • exceptionCaught

        public final void exceptionCaught​(io.netty.channel.ChannelHandlerContext ctx,
                                          java.lang.Throwable cause)
                                   throws java.lang.Exception
        Specified by:
        exceptionCaught in interface io.netty.channel.ChannelHandler
        Specified by:
        exceptionCaught in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        exceptionCaught in class io.netty.handler.codec.http2.Http2ConnectionHandler
        Throws:
        java.lang.Exception
      • ctx

        protected final io.netty.channel.ChannelHandlerContext ctx()
      • sendInitialConnectionWindow

        private void sendInitialConnectionWindow()
                                          throws io.netty.handler.codec.http2.Http2Exception
        Sends initial connection window to the remote endpoint if necessary.
        Throws:
        io.netty.handler.codec.http2.Http2Exception
      • setAutoTuneFlowControl

        void setAutoTuneFlowControl​(boolean isOn)