org.apache.mina.filter.codec
Class SynchronizedProtocolDecoder

java.lang.Object
  extended by org.apache.mina.filter.codec.SynchronizedProtocolDecoder
All Implemented Interfaces:
ProtocolDecoder

public class SynchronizedProtocolDecoder
extends java.lang.Object
implements ProtocolDecoder

A ProtocolDecoder 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 by ProtocolCodecFilter. 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
SynchronizedProtocolDecoder(ProtocolDecoder decoder)
          Creates a new instance which decorates the specified decoder.
 
Method Summary
 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()
          Returns the decoder this decoder is decorating.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SynchronizedProtocolDecoder

public SynchronizedProtocolDecoder(ProtocolDecoder decoder)
Creates a new instance which decorates the specified 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 java.lang.Exception
Description copied from interface: ProtocolDecoder
Decodes binary or protocol-specific content into higher-level message objects. MINA invokes ProtocolDecoder.decode(IoSession, IoBuffer, ProtocolDecoderOutput) method with read data, and then the decoder implementation puts decoded messages into ProtocolDecoderOutput.

Specified by:
decode in interface ProtocolDecoder
Throws:
java.lang.Exception - if the read data violated protocol specification

finishDecode

public void finishDecode(IoSession session,
                         ProtocolDecoderOutput out)
                  throws java.lang.Exception
Description copied from interface: ProtocolDecoder
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 that ProtocolDecoder.decode(IoSession, IoBuffer, ProtocolDecoderOutput) method didn't process completely.

Specified by:
finishDecode in interface ProtocolDecoder
Throws:
java.lang.Exception - if the read data violated protocol specification

dispose

public void dispose(IoSession session)
             throws java.lang.Exception
Description copied from interface: ProtocolDecoder
Releases all resources related with this decoder.

Specified by:
dispose in interface ProtocolDecoder
Throws:
java.lang.Exception - if failed to dispose all resources