org.apache.mina.filter.codec.demux

Class DemuxingProtocolCodecFactory

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(Class encoderOrDecoderClass)
void
register(MessageDecoder decoder)
void
register(MessageDecoderFactory factory)
void
register(MessageEncoder encoder)
void
register(MessageEncoderFactory factory)

Constructor Details

DemuxingProtocolCodecFactory

public DemuxingProtocolCodecFactory()

Method Details

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

getDecoder

public ProtocolDecoder getDecoder()
            throws Exception
Returns a new (or reusable) instance of ProtocolDecoder which decodes binary or protocol-specific data into message objects.
Specified by:
getDecoder in interface ProtocolCodecFactory

getEncoder

public ProtocolEncoder getEncoder()
            throws Exception
Returns a new (or reusable) instance of ProtocolEncoder which encodes message objects into binary or protocol-specific data.
Specified by:
getEncoder in interface ProtocolCodecFactory

register

public void register(Class encoderOrDecoderClass)

register

public void register(MessageDecoder decoder)

register

public void register(MessageDecoderFactory factory)

register

public void register(MessageEncoder encoder)

register

public void register(MessageEncoderFactory factory)