Package org.apache.mina.filter.codec
Class SynchronizedProtocolDecoder
- java.lang.Object
-
- org.apache.mina.filter.codec.SynchronizedProtocolDecoder
-
- All Implemented Interfaces:
ProtocolDecoder
public class SynchronizedProtocolDecoder extends Object implements ProtocolDecoder
AProtocolDecoder
implementation which decorates an existing decoder to be thread-safe. Please be careful if you're going to use this decorator because it can be a root of performance degradation in a multi-thread environment. Also, by default, appropriate synchronization is done on a per-session basis byProtocolCodecFilter
. Please use this decorator only when you need to synchronize on a per-decoder basis, which is not common.- Author:
- Apache MINA Project
-
-
Constructor Summary
Constructors Constructor Description SynchronizedProtocolDecoder(ProtocolDecoder decoder)
Creates a new instance which decorates the specified decoder.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out)
Decodes binary or protocol-specific content into higher-level message objects.void
dispose(IoSession session)
Releases all resources related with this decoder.void
finishDecode(IoSession session, ProtocolDecoderOutput out)
Invoked when the specified session is closed.ProtocolDecoder
getDecoder()
-
-
-
Constructor Detail
-
SynchronizedProtocolDecoder
public SynchronizedProtocolDecoder(ProtocolDecoder decoder)
Creates a new instance which decorates the specified decoder.- Parameters:
decoder
- The decorated decoder
-
-
Method Detail
-
getDecoder
public ProtocolDecoder getDecoder()
- Returns:
- the decoder this decoder is decorating.
-
decode
public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws 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:
decode
in interfaceProtocolDecoder
- Parameters:
session
- The current Sessionin
- the buffer to decodeout
- TheProtocolDecoderOutput
that will receive the decoded message- Throws:
Exception
- if the read data violated protocol specification
-
finishDecode
public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception
Invoked when the specified session is closed. This method is useful when you deal with the protocol which doesn't specify the length of a message such as HTTP response without content-length header. Implement this method to process the remaining data thatProtocolDecoder.decode(IoSession, IoBuffer, ProtocolDecoderOutput)
method didn't process completely.- Specified by:
finishDecode
in interfaceProtocolDecoder
- Parameters:
session
- The current Sessionout
- TheProtocolDecoderOutput
that contains the decoded message- Throws:
Exception
- if the read data violated protocol specification
-
dispose
public void dispose(IoSession session) throws Exception
Releases all resources related with this decoder.- Specified by:
dispose
in interfaceProtocolDecoder
- Parameters:
session
- The current Session- Throws:
Exception
- if failed to dispose all resources
-
-