Class DecodingStateProtocolDecoder
- java.lang.Object
-
- org.apache.mina.filter.codec.statemachine.DecodingStateProtocolDecoder
-
- All Implemented Interfaces:
ProtocolDecoder
public class DecodingStateProtocolDecoder extends java.lang.Object implements ProtocolDecoder
ProtocolDecoderwhich uses aDecodingStateto decode data. Use aDecodingStateMachineasDecodingStateto create a state machine which can decode your protocol.NOTE: This is a stateful decoder. You should create one instance per session.
-
-
Field Summary
Fields Modifier and Type Field Description private IoSessionsessionprivate DecodingStatestateprivate java.util.Queue<IoBuffer>undecodedBuffers
-
Constructor Summary
Constructors Constructor Description DecodingStateProtocolDecoder(DecodingState state)Creates a new instance using the specifiedDecodingStateinstance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out)Decodes binary or protocol-specific content into higher-level message objects.voiddispose(IoSession session)Releases all resources related with this decoder.voidfinishDecode(IoSession session, ProtocolDecoderOutput out)Invoked when the specifiedsessionis closed.
-
-
-
Field Detail
-
state
private final DecodingState state
-
undecodedBuffers
private final java.util.Queue<IoBuffer> undecodedBuffers
-
session
private IoSession session
-
-
Constructor Detail
-
DecodingStateProtocolDecoder
public DecodingStateProtocolDecoder(DecodingState state)
Creates a new instance using the specifiedDecodingStateinstance.- Parameters:
state- theDecodingState.- Throws:
java.lang.IllegalArgumentException- if the specified state isnull.
-
-
Method Detail
-
decode
public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws java.lang.Exception
Decodes binary or protocol-specific content into higher-level message objects. MINA invokesProtocolDecoder.decode(IoSession, IoBuffer, ProtocolDecoderOutput)method with read data, and then the decoder implementation puts decoded messages intoProtocolDecoderOutput.- Specified by:
decodein interfaceProtocolDecoder- Parameters:
session- The current Sessionin- the buffer to decodeout- TheProtocolDecoderOutputthat will receive the decoded message- Throws:
java.lang.Exception- if the read data violated protocol specification
-
finishDecode
public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws java.lang.Exception
Invoked when the specifiedsessionis closed. This method is useful when you deal with the protocol which doesn't specify the length of a message such as HTTP response withoutcontent-lengthheader. Implement this method to process the remaining data thatProtocolDecoder.decode(IoSession, IoBuffer, ProtocolDecoderOutput)method didn't process completely.- Specified by:
finishDecodein interfaceProtocolDecoder- Parameters:
session- The current Sessionout- TheProtocolDecoderOutputthat contains the decoded message- Throws:
java.lang.Exception- if the read data violated protocol specification
-
dispose
public void dispose(IoSession session) throws java.lang.Exception
Releases all resources related with this decoder.- Specified by:
disposein interfaceProtocolDecoder- Parameters:
session- The current Session- Throws:
java.lang.Exception- if failed to dispose all resources
-
-