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

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

public abstract class SkippingState
extends Object
implements DecodingState

DecodingState which skips data until canSkip(byte) returns false.

Version:
$Rev: 671827 $, $Date: 2008-06-26 10:49:48 +0200 (Do, 26 Jun 2008) $
Author:
The Apache MINA Project (dev@mina.apache.org)

Constructor Summary
SkippingState()
           
 
Method Summary
protected abstract  boolean canSkip(byte b)
          Called to determine whether the specified byte can be skipped.
 DecodingState decode(IoBuffer in, ProtocolDecoderOutput out)
          Invoked when data is available for this state.
protected abstract  DecodingState finishDecode(int skippedBytes)
          Invoked when this state cannot skip any more bytes.
 DecodingState finishDecode(ProtocolDecoderOutput out)
          Invoked when the associated IoSession is closed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SkippingState

public SkippingState()
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.

canSkip

protected abstract boolean canSkip(byte b)
Called to determine whether the specified byte can be skipped.

Parameters:
b - the byte to check.
Returns:
true if the byte can be skipped.

finishDecode

protected abstract DecodingState finishDecode(int skippedBytes)
                                       throws Exception
Invoked when this state cannot skip any more bytes.

Parameters:
skippedBytes - the number of bytes skipped.
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.


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