Class SslHandler

    • Field Detail

      • MIN_ENCODER_BUFFER_PACKETS

        protected static final int MIN_ENCODER_BUFFER_PACKETS
        Minimum size of encoder buffer in packets
        See Also:
        Constant Field Values
      • MAX_ENCODER_BUFFER_PACKETS

        protected static final int MAX_ENCODER_BUFFER_PACKETS
        Maximum size of encoder buffer in packets
        See Also:
        Constant Field Values
      • ZERO

        protected static final IoBuffer ZERO
        Zero length buffer used to prime the ssl engine
      • LOGGER

        protected static final Logger LOGGER
        Static logger
      • mEncodeQueue

        protected final Deque<WriteRequest> mEncodeQueue
        Write Requests which are enqueued prior to the completion of the handshaking
      • mAckQueue

        protected final Deque<WriteRequest> mAckQueue
        Requests which have been sent to the socket and waiting acknowledgment
      • mEngine

        protected final SSLEngine mEngine
        SSL Engine
      • mExecutor

        protected final Executor mExecutor
        Task executor
      • mSession

        protected final IoSession mSession
        Socket session
      • mDecodeBuffer

        protected IoBuffer mDecodeBuffer
        Progressive decoder buffer
    • Constructor Detail

      • SslHandler

        public SslHandler​(SSLEngine p,
                          Executor e,
                          IoSession s)
        Instantiates a new handler
        Parameters:
        p - engine
        e - executor
        s - session
    • Method Detail

      • isOpen

        public abstract boolean isOpen()
        Returns:
        true if the encryption session is open
      • isConnected

        public abstract boolean isConnected()
        Returns:
        true if the encryption session is connected and secure
      • open

        public abstract void open​(IoFilter.NextFilter next)
                           throws SSLException
        Opens the encryption session, this may include sending the initial handshake message
        Parameters:
        next - The next filter
        Throws:
        SSLException - The thrown exception
      • receive

        public abstract void receive​(IoFilter.NextFilter next,
                                     IoBuffer message)
                              throws SSLException
        Decodes encrypted messages and passes the results to the next filter.
        Parameters:
        next - The next filter
        message - the received message
        Throws:
        SSLException - The thrown exception
      • ack

        public abstract void ack​(IoFilter.NextFilter next,
                                 WriteRequest request)
                          throws SSLException
        Acknowledge that a WriteRequest has been successfully written to the IoSession

        This functionality is used to enforce flow control by allowing only a specific number of pending write operations at any moment of time. When one WriteRequest is acknowledged, another can be encoded and written.

        Parameters:
        next - The next filter
        request - The request to ack
        Throws:
        SSLException - The thrown exception
      • close

        public abstract void close​(IoFilter.NextFilter next,
                                   boolean linger)
                            throws SSLException
        Closes the encryption session and writes any required messages
        Parameters:
        next - The next filter
        linger - if true, write any queued messages before closing
        Throws:
        SSLException - The thrown exception
      • resume_decode_buffer

        protected IoBuffer resume_decode_buffer​(IoBuffer source)
        Combines the received data with any previously received data
        Parameters:
        source - received data
        Returns:
        buffer to decode
      • suspend_decode_buffer

        protected void suspend_decode_buffer​(IoBuffer source)
        Stores data for later use if any is remaining
        Parameters:
        source - the buffer previously returned by resume_decode_buffer(IoBuffer)
      • allocate_encode_buffer

        protected IoBuffer allocate_encode_buffer​(int estimate)
        Allocates the default encoder buffer for the given source size
        Parameters:
        estimate - The estimated remaining size
        Returns:
        buffer The allocated buffer
      • allocate_app_buffer

        protected IoBuffer allocate_app_buffer​(int estimate)
        Allocates the default decoder buffer for the given source size
        Parameters:
        estimate - The estimated remaining size
        Returns:
        buffer The allocated buffer