Class DecodingStateMachine
java.lang.Object
org.apache.mina.filter.codec.statemachine.DecodingStateMachine
- All Implemented Interfaces:
DecodingState
Abstract base class for decoder state machines. Calls init() to
get the start
DecodingState of the state machine. Calls
destroy() when the state machine has reached its end state or when
the session is closed.
NOTE: The ProtocolDecoderOutput used by this class when calling
DecodingState.decode(IoBuffer, ProtocolDecoderOutput) buffers decoded
messages in a List. 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
real ProtocolDecoderOutput used by the configured
ProtocolCodecFilter.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ProtocolDecoderOutputprivate DecodingStateprivate booleanprivate static final org.slf4j.Logger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidcleanup()decode(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.Invoked when the associatedIoSessionis closed.private DecodingStateprotected abstract DecodingStateinit()Invoked to initialize this state machine.
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
childProducts
-
childOutput
-
currentState
-
initialized
private boolean initialized
-
-
Constructor Details
-
DecodingStateMachine
public DecodingStateMachine()
-
-
Method Details
-
init
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
-
decode
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
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.
-
cleanup
private void cleanup() -
getCurrentState
- Throws:
Exception
-