Class AbstractThreeWayHandshakeClientHandler<R extends RequestMessage,​O extends ResponseMessage<?>>

  • All Implemented Interfaces:
    io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler, io.netty.channel.ChannelOutboundHandler
    Direct Known Subclasses:
    ClientConnectionHandler

    public abstract class AbstractThreeWayHandshakeClientHandler<R extends RequestMessage,​O extends ResponseMessage<?>>
    extends SimpleChannelDuplexHandler<Message,​Message>
    This handler performs the client-side part of a three-way handshake to create a session. It automatically requests the server for a new session. The server must confirm this request and then offers the client a session. Then the client has to confirm the offered session again.
    • Field Detail

      • timeout

        protected final Duration timeout
      • messenger

        protected final Messenger messenger
      • timeoutFuture

        protected io.netty.util.concurrent.ScheduledFuture<?> timeoutFuture
    • Constructor Detail

      • AbstractThreeWayHandshakeClientHandler

        protected AbstractThreeWayHandshakeClientHandler​(Duration timeout,
                                                         Messenger messenger,
                                                         R requestMessage)
      • AbstractThreeWayHandshakeClientHandler

        protected AbstractThreeWayHandshakeClientHandler​(Duration timeout,
                                                         Messenger messenger,
                                                         CompletableFuture<Void> handshakeFuture,
                                                         io.netty.util.concurrent.ScheduledFuture<?> timeoutFuture,
                                                         R requestMessage)
    • Method Detail

      • doHandshake

        protected void doHandshake​(io.netty.channel.ChannelHandlerContext ctx,
                                   Message message)
      • handlerAdded

        public void handlerAdded​(io.netty.channel.ChannelHandlerContext ctx)
                          throws Exception
        Specified by:
        handlerAdded in interface io.netty.channel.ChannelHandler
        Overrides:
        handlerAdded in class io.netty.channel.ChannelHandlerAdapter
        Throws:
        Exception
      • requestSession

        protected void requestSession​(io.netty.channel.ChannelHandlerContext ctx)
      • confirmSession

        protected void confirmSession​(io.netty.channel.ChannelHandlerContext ctx,
                                      O offerMessage)
      • createConnection

        protected abstract void createConnection​(io.netty.channel.ChannelHandlerContext ctx,
                                                 O offerMessage)
      • processUnexpectedMessageDuringHandshake

        protected void processUnexpectedMessageDuringHandshake​(io.netty.channel.ChannelHandlerContext ctx,
                                                               Message message)
      • getLogger

        protected abstract org.slf4j.Logger getLogger()
      • processMessageAfterHandshake

        protected void processMessageAfterHandshake​(io.netty.channel.ChannelHandlerContext ctx,
                                                    Message message)
      • channelActive

        public void channelActive​(io.netty.channel.ChannelHandlerContext ctx)
                           throws Exception
        Specified by:
        channelActive in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        channelActive in class io.netty.channel.ChannelInboundHandlerAdapter
        Throws:
        Exception
      • startTimeoutGuard

        protected void startTimeoutGuard​(io.netty.channel.ChannelHandlerContext ctx)
      • exceptionCaught

        public void exceptionCaught​(io.netty.channel.ChannelHandlerContext ctx,
                                    Throwable cause)
        Specified by:
        exceptionCaught in interface io.netty.channel.ChannelHandler
        Specified by:
        exceptionCaught in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        exceptionCaught in class io.netty.channel.ChannelInboundHandlerAdapter