Class PerMessageDeflateExtension

    • Field Detail

      • EXTENSION_REGISTERED_NAME

        private static final java.lang.String EXTENSION_REGISTERED_NAME
        See Also:
        Constant Field Values
      • SERVER_NO_CONTEXT_TAKEOVER

        private static final java.lang.String SERVER_NO_CONTEXT_TAKEOVER
        See Also:
        Constant Field Values
      • CLIENT_NO_CONTEXT_TAKEOVER

        private static final java.lang.String CLIENT_NO_CONTEXT_TAKEOVER
        See Also:
        Constant Field Values
      • SERVER_MAX_WINDOW_BITS

        private static final java.lang.String SERVER_MAX_WINDOW_BITS
        See Also:
        Constant Field Values
      • CLIENT_MAX_WINDOW_BITS

        private static final java.lang.String CLIENT_MAX_WINDOW_BITS
        See Also:
        Constant Field Values
      • TAIL_BYTES

        private static final byte[] TAIL_BYTES
      • serverNoContextTakeover

        private boolean serverNoContextTakeover
      • clientNoContextTakeover

        private boolean clientNoContextTakeover
      • requestedParameters

        private java.util.Map<java.lang.String,​java.lang.String> requestedParameters
      • inflater

        private java.util.zip.Inflater inflater
      • deflater

        private java.util.zip.Deflater deflater
    • Constructor Detail

      • PerMessageDeflateExtension

        public PerMessageDeflateExtension()
    • Method Detail

      • decodeFrame

        public void decodeFrame​(Framedata inputFrame)
                         throws InvalidDataException
        Description copied from interface: IExtension
        Decode a frame with a extension specific algorithm. The algorithm is subject to be implemented by the specific extension. The resulting frame will be used in the application
        Specified by:
        decodeFrame in interface IExtension
        Overrides:
        decodeFrame in class DefaultExtension
        Parameters:
        inputFrame - the frame, which has do be decoded to be used in the application
        Throws:
        InvalidDataException - Throw InvalidDataException if the received frame is not correctly implemented by the other endpoint or there are other protocol errors/decoding errors
      • decompress

        private void decompress​(byte[] data,
                                java.io.ByteArrayOutputStream outputBuffer)
                         throws java.util.zip.DataFormatException
        Throws:
        java.util.zip.DataFormatException
      • encodeFrame

        public void encodeFrame​(Framedata inputFrame)
        Description copied from interface: IExtension
        Encode a frame with a extension specific algorithm. The algorithm is subject to be implemented by the specific extension. The resulting frame will be send to the other endpoint.
        Specified by:
        encodeFrame in interface IExtension
        Overrides:
        encodeFrame in class DefaultExtension
        Parameters:
        inputFrame - the frame, which has do be encoded to be used on the other endpoint
      • endsWithTail

        private boolean endsWithTail​(byte[] data)
      • acceptProvidedExtensionAsServer

        public boolean acceptProvidedExtensionAsServer​(java.lang.String inputExtension)
        Description copied from interface: IExtension
        Check if the received Sec-WebSocket-Extensions header field contains a offer for the specific extension if the endpoint is in the role of a server
        Specified by:
        acceptProvidedExtensionAsServer in interface IExtension
        Overrides:
        acceptProvidedExtensionAsServer in class DefaultExtension
        Parameters:
        inputExtension - the received Sec-WebSocket-Extensions header field offered by the other endpoint
        Returns:
        true, if the offer does fit to this specific extension
      • acceptProvidedExtensionAsClient

        public boolean acceptProvidedExtensionAsClient​(java.lang.String inputExtension)
        Description copied from interface: IExtension
        Check if the received Sec-WebSocket-Extensions header field contains a offer for the specific extension if the endpoint is in the role of a client
        Specified by:
        acceptProvidedExtensionAsClient in interface IExtension
        Overrides:
        acceptProvidedExtensionAsClient in class DefaultExtension
        Parameters:
        inputExtension - the received Sec-WebSocket-Extensions header field offered by the other endpoint
        Returns:
        true, if the offer does fit to this specific extension
      • getProvidedExtensionAsClient

        public java.lang.String getProvidedExtensionAsClient()
        Description copied from interface: IExtension
        Return the specific Sec-WebSocket-Extensions header offer for this extension if the endpoint is in the role of a client. If the extension returns an empty string (""), the offer will not be included in the handshake.
        Specified by:
        getProvidedExtensionAsClient in interface IExtension
        Overrides:
        getProvidedExtensionAsClient in class DefaultExtension
        Returns:
        the specific Sec-WebSocket-Extensions header for this extension
      • getProvidedExtensionAsServer

        public java.lang.String getProvidedExtensionAsServer()
        Description copied from interface: IExtension
        Return the specific Sec-WebSocket-Extensions header offer for this extension if the endpoint is in the role of a server. If the extension returns an empty string (""), the offer will not be included in the handshake.
        Specified by:
        getProvidedExtensionAsServer in interface IExtension
        Overrides:
        getProvidedExtensionAsServer in class DefaultExtension
        Returns:
        the specific Sec-WebSocket-Extensions header for this extension
      • copyInstance

        public IExtension copyInstance()
        Description copied from interface: IExtension
        Extensions must only be by one websocket at all. To prevent extensions to be used more than once the Websocket implementation should call this method in order to create a new usable version of a given extension instance.
        The copy can be safely used in conjunction with a new websocket connection.
        Specified by:
        copyInstance in interface IExtension
        Overrides:
        copyInstance in class DefaultExtension
        Returns:
        a copy of the extension
      • isFrameValid

        public void isFrameValid​(Framedata inputFrame)
                          throws InvalidDataException
        This extension requires the RSV1 bit to be set only for the first frame. If the frame is type is CONTINUOUS, RSV1 bit must be unset.
        Specified by:
        isFrameValid in interface IExtension
        Overrides:
        isFrameValid in class CompressionExtension
        Parameters:
        inputFrame - the received frame
        Throws:
        InvalidDataException - Throw InvalidDataException if the received frame is not correctly implementing the specification for the specific extension
      • toString

        public java.lang.String toString()
        Description copied from interface: IExtension
        Return a string which should contain the class name as well as additional information about the current configurations for this extension (DEBUG purposes)
        Specified by:
        toString in interface IExtension
        Overrides:
        toString in class DefaultExtension
        Returns:
        a string containing the class name as well as additional information