org.apache.mina.filter.codec.statemachine
Class ConsumeToDynamicTerminatorDecodingState

java.lang.Object
  extended by org.apache.mina.filter.codec.statemachine.ConsumeToDynamicTerminatorDecodingState
All Implemented Interfaces:
DecodingState
Direct Known Subclasses:
ConsumeToLinearWhitespaceDecodingState

public abstract class ConsumeToDynamicTerminatorDecodingState
extends java.lang.Object
implements DecodingState

DecodingState which consumes all bytes until a fixed (ASCII) character is reached. The terminator is skipped.

Author:
Apache MINA Project

Constructor Summary
ConsumeToDynamicTerminatorDecodingState()
           
 
Method Summary
 DecodingState decode(IoBuffer in, ProtocolDecoderOutput out)
          Invoked when data is available for this state.
protected abstract  DecodingState finishDecode(IoBuffer product, ProtocolDecoderOutput out)
          Invoked when this state has reached the terminator byte.
 DecodingState finishDecode(ProtocolDecoderOutput out)
          Invoked when the associated IoSession is closed.
protected abstract  boolean isTerminator(byte b)
          Determines whether the specified byte is a terminator.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConsumeToDynamicTerminatorDecodingState

public ConsumeToDynamicTerminatorDecodingState()
Method Detail

decode

public DecodingState decode(IoBuffer in,
                            ProtocolDecoderOutput out)
                     throws java.lang.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:
java.lang.Exception - if the read data violated protocol specification.

finishDecode

public DecodingState finishDecode(ProtocolDecoderOutput out)
                           throws java.lang.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:
java.lang.Exception - if the read data violated protocol specification.

isTerminator

protected abstract boolean isTerminator(byte b)
Determines whether the specified byte is a terminator.

Parameters:
b - the byte to check.
Returns:
true if b is a terminator, false otherwise.

finishDecode

protected abstract DecodingState finishDecode(IoBuffer product,
                                              ProtocolDecoderOutput out)
                                       throws java.lang.Exception
Invoked when this state has reached the terminator byte.

Parameters:
product - the read bytes not including the terminator.
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:
java.lang.Exception - if the read data violated protocol specification.


Copyright © 2004-2011 Apache MINA Project. All Rights Reserved.