Class PrefixedStringDecoder

    • Field Detail

      • DEFAULT_PREFIX_LENGTH

        public static final int DEFAULT_PREFIX_LENGTH
        The default length for the prefix
        See Also:
        Constant Field Values
      • DEFAULT_MAX_DATA_LENGTH

        public static final int DEFAULT_MAX_DATA_LENGTH
        The default maximum data length
        See Also:
        Constant Field Values
    • Constructor Detail

      • PrefixedStringDecoder

        public PrefixedStringDecoder​(Charset charset,
                                     int prefixLength,
                                     int maxDataLength)
        Creates a new PrefixedStringDecoder instance
        Parameters:
        charset - the Charset to use for decoding
        prefixLength - the length of the prefix
        maxDataLength - maximum number of bytes allowed for a single String
      • PrefixedStringDecoder

        public PrefixedStringDecoder​(Charset charset,
                                     int prefixLength)
        Creates a new PrefixedStringDecoder instance
        Parameters:
        charset - the Charset to use for decoding
        prefixLength - the length of the prefix
      • PrefixedStringDecoder

        public PrefixedStringDecoder​(Charset charset)
        Creates a new PrefixedStringDecoder instance
        Parameters:
        charset - the Charset to use for decoding
    • Method Detail

      • setPrefixLength

        public void setPrefixLength​(int prefixLength)
        Sets the number of bytes used by the length prefix
        Parameters:
        prefixLength - the length of the length prefix (1, 2, or 4)
      • getPrefixLength

        public int getPrefixLength()
        Gets the length of the length prefix (1, 2, or 4)
        Returns:
        length of the length prefix
      • setMaxDataLength

        public void setMaxDataLength​(int maxDataLength)
        Sets the maximum allowed value specified as data length in the incoming data

        Useful for preventing an OutOfMemory attack by the peer. The decoder will throw a BufferDataException when data length specified in the incoming data is greater than maxDataLength The default value is DEFAULT_MAX_DATA_LENGTH.

        Parameters:
        maxDataLength - maximum allowed value specified as data length in the incoming data
      • getMaxDataLength

        public int getMaxDataLength()
        Gets the maximum number of bytes allowed for a single String
        Returns:
        maximum number of bytes allowed for a single String
      • doDecode

        protected boolean doDecode​(IoSession session,
                                   IoBuffer in,
                                   ProtocolDecoderOutput out)
                            throws Exception
        Implement this method to consume the specified cumulative buffer and decode its content into message(s).
        Specified by:
        doDecode in class CumulativeProtocolDecoder
        Parameters:
        session - The current Session
        in - the cumulative buffer
        out - The ProtocolDecoderOutput that will receive the decoded message
        Returns:
        true if and only if there's more to decode in the buffer and you want to have doDecode method invoked again. Return false if remaining data is not enough to decode, then this method will be invoked again when more data is cumulated.
        Throws:
        Exception - if cannot decode in.