public class DemuxingProtocolEncoder extends java.lang.Object implements ProtocolEncoder
ProtocolEncoder that demultiplexes incoming message
encoding requests into an appropriate MessageEncoder.
MessageEncoder
Override dispose(IoSession) method. Please don't forget to call
super.dispose().
MessageEncoderFactory,
MessageEncoder| Modifier and Type | Class and Description |
|---|---|
private static class |
DemuxingProtocolEncoder.DefaultConstructorMessageEncoderFactory<T> |
private static class |
DemuxingProtocolEncoder.SingletonMessageEncoderFactory<T> |
private class |
DemuxingProtocolEncoder.State |
| Modifier and Type | Field and Description |
|---|---|
private static java.lang.Class<?>[] |
EMPTY_PARAMS |
private AttributeKey |
STATE |
private java.util.Map<java.lang.Class<?>,MessageEncoderFactory> |
type2encoderFactory |
| Constructor and Description |
|---|
DemuxingProtocolEncoder() |
| Modifier and Type | Method and Description |
|---|---|
void |
addMessageEncoder(java.lang.Class<?> messageType,
java.lang.Class<? extends MessageEncoder> encoderClass) |
<T> void |
addMessageEncoder(java.lang.Class<T> messageType,
MessageEncoder<? super T> encoder) |
<T> void |
addMessageEncoder(java.lang.Class<T> messageType,
MessageEncoderFactory<? super T> factory) |
void |
addMessageEncoder(java.lang.Iterable<java.lang.Class<?>> messageTypes,
java.lang.Class<? extends MessageEncoder> encoderClass) |
<T> void |
addMessageEncoder(java.lang.Iterable<java.lang.Class<? extends T>> messageTypes,
MessageEncoder<? super T> encoder) |
<T> void |
addMessageEncoder(java.lang.Iterable<java.lang.Class<? extends T>> messageTypes,
MessageEncoderFactory<? super T> factory) |
void |
dispose(IoSession session)
Releases all resources related with this encoder.
|
void |
encode(IoSession session,
java.lang.Object message,
ProtocolEncoderOutput out)
Encodes higher-level message objects into binary or protocol-specific data.
|
protected MessageEncoder<java.lang.Object> |
findEncoder(DemuxingProtocolEncoder.State state,
java.lang.Class<?> type) |
private MessageEncoder<java.lang.Object> |
findEncoder(DemuxingProtocolEncoder.State state,
java.lang.Class<?> type,
java.util.Set<java.lang.Class<?>> triedClasses) |
private DemuxingProtocolEncoder.State |
getState(IoSession session) |
private final AttributeKey STATE
private final java.util.Map<java.lang.Class<?>,MessageEncoderFactory> type2encoderFactory
private static final java.lang.Class<?>[] EMPTY_PARAMS
public void addMessageEncoder(java.lang.Class<?> messageType,
java.lang.Class<? extends MessageEncoder> encoderClass)
public <T> void addMessageEncoder(java.lang.Class<T> messageType,
MessageEncoder<? super T> encoder)
public <T> void addMessageEncoder(java.lang.Class<T> messageType,
MessageEncoderFactory<? super T> factory)
public void addMessageEncoder(java.lang.Iterable<java.lang.Class<?>> messageTypes,
java.lang.Class<? extends MessageEncoder> encoderClass)
public <T> void addMessageEncoder(java.lang.Iterable<java.lang.Class<? extends T>> messageTypes,
MessageEncoder<? super T> encoder)
public <T> void addMessageEncoder(java.lang.Iterable<java.lang.Class<? extends T>> messageTypes,
MessageEncoderFactory<? super T> factory)
public void encode(IoSession session, java.lang.Object message, ProtocolEncoderOutput out) throws java.lang.Exception
ProtocolEncoder.encode(IoSession, Object, ProtocolEncoderOutput)
method with message which is popped from the session write queue, and then
the encoder implementation puts encoded messages (typically IoBuffers)
into ProtocolEncoderOutput.encode in interface ProtocolEncoderjava.lang.Exception - if the message violated protocol specificationprotected MessageEncoder<java.lang.Object> findEncoder(DemuxingProtocolEncoder.State state, java.lang.Class<?> type)
private MessageEncoder<java.lang.Object> findEncoder(DemuxingProtocolEncoder.State state, java.lang.Class<?> type, java.util.Set<java.lang.Class<?>> triedClasses)
public void dispose(IoSession session) throws java.lang.Exception
dispose in interface ProtocolEncoderjava.lang.Exception - if failed to dispose all resourcesprivate DemuxingProtocolEncoder.State getState(IoSession session) throws java.lang.Exception
java.lang.Exception