Class FixedLengthDecodingState

  • All Implemented Interfaces:
    DecodingState

    public abstract class FixedLengthDecodingState
    extends Object
    implements DecodingState
    DecodingState which consumes all received bytes until a configured number of read bytes has been reached. Please note that this state can produce a buffer with less data than the configured length if the associated session has been closed unexpectedly.
    Author:
    Apache MINA Project
    • Constructor Detail

      • FixedLengthDecodingState

        public FixedLengthDecodingState​(int length)
        Constructs a new instance using the specified decode length.
        Parameters:
        length - the number of bytes to read.
    • Method Detail

      • decode

        public DecodingState decode​(IoBuffer in,
                                    ProtocolDecoderOutput out)
                             throws Exception
        Invoked when data is available for this state.
        Specified by:
        decode in interface DecodingState
        Parameters:
        in - the data to be decoded.
        out - used to write decoded objects.
        Returns:
        the next state if a state transition was triggered (use this for loop transitions) or null if the state machine has reached its end.
        Throws:
        Exception - if the read data violated protocol specification.
      • finishDecode

        public DecodingState finishDecode​(ProtocolDecoderOutput out)
                                   throws Exception
        Invoked when the associated IoSession is closed. This method is useful when you deal with protocols which don't specify the length of a message (e.g. HTTP responses without content-length header). Implement this method to process the remaining data that DecodingState.decode(IoBuffer, ProtocolDecoderOutput) method didn't process completely.
        Specified by:
        finishDecode in interface DecodingState
        Parameters:
        out - used to write decoded objects.
        Returns:
        the next state if a state transition was triggered (use this for loop transitions) or null if the state machine has reached its end.
        Throws:
        Exception - if the read data violated protocol specification.
      • finishDecode

        protected abstract DecodingState finishDecode​(IoBuffer product,
                                                      ProtocolDecoderOutput out)
                                               throws Exception
        Invoked when this state has consumed the configured number of bytes.
        Parameters:
        product - the data.
        out - the current ProtocolDecoderOutput used to write decoded messages.
        Returns:
        the next state if a state transition was triggered (use this for loop transitions) or null if the state machine has reached its end.
        Throws:
        Exception - if the read data violated protocol specification.