Class DemuxingProtocolEncoder
- java.lang.Object
-
- org.apache.mina.filter.codec.demux.DemuxingProtocolEncoder
-
- All Implemented Interfaces:
ProtocolEncoder
public class DemuxingProtocolEncoder extends Object implements ProtocolEncoder
A compositeProtocolEncoder
that demultiplexes incoming message encoding requests into an appropriateMessageEncoder
.Disposing resources acquired by
MessageEncoder
Override
dispose(IoSession)
method. Please don't forget to call super.dispose().- Author:
- Apache MINA Project
- See Also:
MessageEncoderFactory
,MessageEncoder
-
-
Constructor Summary
Constructors Constructor Description DemuxingProtocolEncoder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addMessageEncoder(Class<?> messageType, Class<? extends MessageEncoder> encoderClass)
Add a new message encoder class for a given message type<T> void
addMessageEncoder(Class<T> messageType, MessageEncoder<? super T> encoder)
Add a new message encoder instance for a given message type<T> void
addMessageEncoder(Class<T> messageType, MessageEncoderFactory<? super T> factory)
Add a new message encoder factory for a given message typevoid
addMessageEncoder(Iterable<Class<?>> messageTypes, Class<? extends MessageEncoder> encoderClass)
Add a new message encoder class for a list of message types<T> void
addMessageEncoder(Iterable<Class<? extends T>> messageTypes, MessageEncoder<? super T> encoder)
Add a new message instance class for a list of message types<T> void
addMessageEncoder(Iterable<Class<? extends T>> messageTypes, MessageEncoderFactory<? super T> factory)
Add a new message encoder factory for a list of message typesvoid
dispose(IoSession session)
Releases all resources related with this encoder.void
encode(IoSession session, Object message, ProtocolEncoderOutput out)
Encodes higher-level message objects into binary or protocol-specific data.protected MessageEncoder<Object>
findEncoder(org.apache.mina.filter.codec.demux.DemuxingProtocolEncoder.State state, Class<?> type)
-
-
-
Method Detail
-
addMessageEncoder
public void addMessageEncoder(Class<?> messageType, Class<? extends MessageEncoder> encoderClass)
Add a new message encoder class for a given message type- Parameters:
messageType
- The message typeencoderClass
- The encoder class
-
addMessageEncoder
public <T> void addMessageEncoder(Class<T> messageType, MessageEncoder<? super T> encoder)
Add a new message encoder instance for a given message type- Type Parameters:
T
- The message type- Parameters:
messageType
- The message typeencoder
- The encoder instance
-
addMessageEncoder
public <T> void addMessageEncoder(Class<T> messageType, MessageEncoderFactory<? super T> factory)
Add a new message encoder factory for a given message type- Type Parameters:
T
- The message type- Parameters:
messageType
- The message typefactory
- The encoder factory
-
addMessageEncoder
public void addMessageEncoder(Iterable<Class<?>> messageTypes, Class<? extends MessageEncoder> encoderClass)
Add a new message encoder class for a list of message types- Parameters:
messageTypes
- The message typesencoderClass
- The encoder class
-
addMessageEncoder
public <T> void addMessageEncoder(Iterable<Class<? extends T>> messageTypes, MessageEncoder<? super T> encoder)
Add a new message instance class for a list of message types- Type Parameters:
T
- The message type- Parameters:
messageTypes
- The message typesencoder
- The encoder instance
-
addMessageEncoder
public <T> void addMessageEncoder(Iterable<Class<? extends T>> messageTypes, MessageEncoderFactory<? super T> factory)
Add a new message encoder factory for a list of message types- Type Parameters:
T
- The message type- Parameters:
messageTypes
- The message typesfactory
- The encoder factory
-
encode
public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception
Encodes higher-level message objects into binary or protocol-specific data. MINA invokesProtocolEncoder.encode(IoSession, Object, ProtocolEncoderOutput)
method with message which is popped from the session write queue, and then the encoder implementation puts encoded messages (typicallyIoBuffer
s) intoProtocolEncoderOutput
.- Specified by:
encode
in interfaceProtocolEncoder
- Parameters:
session
- The current Sessionmessage
- the message to encodeout
- TheProtocolEncoderOutput
that will receive the encoded message- Throws:
Exception
- if the message violated protocol specification
-
findEncoder
protected MessageEncoder<Object> findEncoder(org.apache.mina.filter.codec.demux.DemuxingProtocolEncoder.State state, Class<?> type)
-
dispose
public void dispose(IoSession session) throws Exception
Releases all resources related with this encoder.- Specified by:
dispose
in interfaceProtocolEncoder
- Parameters:
session
- The current Session- Throws:
Exception
- if failed to dispose all resources
-
-