public abstract class DecodingStateMachine extends java.lang.Object implements DecodingState
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
.
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(java.util.List<java.lang.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 java.lang.Exception
DecodingState
.java.lang.Exception
protected abstract DecodingState finishDecode(java.util.List<java.lang.Object> childProducts, ProtocolDecoderOutput out) throws java.lang.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
.java.lang.Exception
protected abstract void destroy() throws java.lang.Exception
java.lang.Exception
public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws java.lang.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.java.lang.Exception
- if the read data violated protocol specification.public DecodingState finishDecode(ProtocolDecoderOutput out) throws java.lang.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.java.lang.Exception
- if the read data violated protocol specification.Copyright © 2004-2019 Apache MINA Project. All Rights Reserved.