public abstract class DecodingStateMachine extends Object implements DecodingState
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
.
Constructor and Description |
---|
DecodingStateMachine() |
Modifier and Type | Method and Description |
---|---|
DecodingState |
decode(IoBuffer in,
ProtocolDecoderOutput out)
Invoked when data is available for this state.
|
protected abstract void |
destroy()
Invoked to destroy this state machine once the end state has been reached
or the session has been closed.
|
protected abstract DecodingState |
finishDecode(List<Object> childProducts,
ProtocolDecoderOutput out)
Called once the state machine has reached its end.
|
DecodingState |
finishDecode(ProtocolDecoderOutput out)
Invoked when the associated
IoSession is closed. |
protected abstract DecodingState |
init()
Invoked to initialize this state machine.
|
protected abstract DecodingState init() throws Exception
DecodingState
.Exception
- if the initialization failedprotected abstract DecodingState finishDecode(List<Object> childProducts, ProtocolDecoderOutput out) throws Exception
childProducts
- contains the messages generated by each of the
DecodingState
s which were exposed to the received data
during the life time of this state machine.out
- the real ProtocolDecoderOutput
used by the
ProtocolCodecFilter
.Exception
- if the decoding end failedprotected abstract void destroy() throws Exception
Exception
- if the destruction failedpublic DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception
decode
in interface DecodingState
in
- the data to be decoded.out
- used to write decoded objects.this
for loop transitions) or null
if
the state machine has reached its end.Exception
- if the read data violated protocol specification.public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception
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.finishDecode
in interface DecodingState
out
- used to write decoded objects.this
for loop transitions) or null
if
the state machine has reached its end.Exception
- if the read data violated protocol specification.Copyright © 2004–2018 Apache MINA Project. All rights reserved.