org.apache.mina.filter.codec.demux
Class DemuxingProtocolCodecFactory

java.lang.Object
  extended by org.apache.mina.filter.codec.demux.DemuxingProtocolCodecFactory
All Implemented Interfaces:
ProtocolCodecFactory

public class DemuxingProtocolCodecFactory
extends java.lang.Object
implements ProtocolCodecFactory

A composite ProtocolCodecFactory that consists of multiple MessageEncoders and MessageDecoders. ProtocolEncoder and ProtocolDecoder this factory returns demultiplex incoming messages and buffers to appropriate MessageEncoders and MessageDecoders.

Disposing resources acquired by MessageEncoder and MessageDecoder

Make your MessageEncoder and MessageDecoder to put all resources that need to be released as a session attribute. disposeCodecResources(IoSession) method will be invoked when a session is closed. Override disposeCodecResources(IoSession) to release the resources you've put as an attribute.

We didn't provide any dispose method for MessageEncoder and MessageDecoder because they can give you a big performance penalty in case you have a lot of message types to handle.

See Also:
MessageEncoder, MessageDecoder

Constructor Summary
DemuxingProtocolCodecFactory()
           
 
Method Summary
protected  void disposeCodecResources(IoSession session)
          Implement this method to release all resources acquired to perform encoding and decoding messages for the specified session.
 ProtocolDecoder getDecoder()
          Returns a new (or reusable) instance of ProtocolDecoder which decodes binary or protocol-specific data into message objects.
 ProtocolEncoder getEncoder()
          Returns a new (or reusable) instance of ProtocolEncoder which encodes message objects into binary or protocol-specific data.
 void register(java.lang.Class<?> encoderOrDecoderClass)
           
 void register(MessageDecoder decoder)
           
 void register(MessageDecoderFactory factory)
           
 void register(MessageEncoder encoder)
           
 void register(MessageEncoderFactory factory)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DemuxingProtocolCodecFactory

public DemuxingProtocolCodecFactory()
Method Detail

register

public void register(java.lang.Class<?> encoderOrDecoderClass)

register

public void register(MessageEncoder encoder)

register

public void register(MessageEncoderFactory factory)

register

public void register(MessageDecoder decoder)

register

public void register(MessageDecoderFactory factory)

getEncoder

public ProtocolEncoder getEncoder()
                           throws java.lang.Exception
Description copied from interface: ProtocolCodecFactory
Returns a new (or reusable) instance of ProtocolEncoder which encodes message objects into binary or protocol-specific data.

Specified by:
getEncoder in interface ProtocolCodecFactory
Throws:
java.lang.Exception

getDecoder

public ProtocolDecoder getDecoder()
                           throws java.lang.Exception
Description copied from interface: ProtocolCodecFactory
Returns a new (or reusable) instance of ProtocolDecoder which decodes binary or protocol-specific data into message objects.

Specified by:
getDecoder in interface ProtocolCodecFactory
Throws:
java.lang.Exception

disposeCodecResources

protected void disposeCodecResources(IoSession session)
Implement this method to release all resources acquired to perform encoding and decoding messages for the specified session. By default, this method does nothing.

Parameters:
session - the session that requires resource deallocation now