Class DecodingStateMachine
- java.lang.Object
-
- org.apache.mina.filter.codec.statemachine.DecodingStateMachine
-
- All Implemented Interfaces:
DecodingState
public abstract class DecodingStateMachine extends Object implements DecodingState
Abstract base class for decoder state machines. Calls init() to get the startDecodingStateof the state machine. Calls destroy() when the state machine has reached its end state or when the session is closed.NOTE: The
ProtocolDecoderOutputused by this class when callingDecodingState.decode(IoBuffer, ProtocolDecoderOutput)buffers decoded messages in aList. Once the state machine has reached its end state this class will call finishDecode(List, ProtocolDecoderOutput). The implementation will have to take care of writing the decoded messages to the realProtocolDecoderOutputused by the configuredProtocolCodecFilter.- Author:
- Apache MINA Project
-
-
Constructor Summary
Constructors Constructor Description DecodingStateMachine()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description DecodingStatedecode(IoBuffer in, ProtocolDecoderOutput out)Invoked when data is available for this state.protected abstract voiddestroy()Invoked to destroy this state machine once the end state has been reached or the session has been closed.protected abstract DecodingStatefinishDecode(List<Object> childProducts, ProtocolDecoderOutput out)Called once the state machine has reached its end.DecodingStatefinishDecode(ProtocolDecoderOutput out)Invoked when the associatedIoSessionis closed.protected abstract DecodingStateinit()Invoked to initialize this state machine.
-
-
-
Method Detail
-
init
protected abstract DecodingState init() throws Exception
Invoked to initialize this state machine.- Returns:
- the start
DecodingState. - Throws:
Exception- if the initialization failed
-
finishDecode
protected abstract DecodingState finishDecode(List<Object> childProducts, ProtocolDecoderOutput out) throws Exception
Called once the state machine has reached its end.- Parameters:
childProducts- contains the messages generated by each of theDecodingStates which were exposed to the received data during the life time of this state machine.out- the realProtocolDecoderOutputused by theProtocolCodecFilter.- Returns:
- the next state if the state machine should resume.
- Throws:
Exception- if the decoding end failed
-
destroy
protected abstract void destroy() throws ExceptionInvoked to destroy this state machine once the end state has been reached or the session has been closed.- Throws:
Exception- if the destruction failed
-
decode
public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception
Invoked when data is available for this state.- Specified by:
decodein interfaceDecodingState- Parameters:
in- the data to be decoded.out- used to write decoded objects.- Returns:
- the next state if a state transition was triggered (use
thisfor loop transitions) ornullif 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 associatedIoSessionis closed. This method is useful when you deal with protocols which don't specify the length of a message (e.g. HTTP responses withoutcontent-lengthheader). Implement this method to process the remaining data thatDecodingState.decode(IoBuffer, ProtocolDecoderOutput)method didn't process completely.- Specified by:
finishDecodein interfaceDecodingState- Parameters:
out- used to write decoded objects.- Returns:
- the next state if a state transition was triggered (use
thisfor loop transitions) ornullif the state machine has reached its end. - Throws:
Exception- if the read data violated protocol specification.
-
-