|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.mina.common.IoHandlerAdapter
org.apache.mina.handler.demux.DemuxingIoHandler
public class DemuxingIoHandler
A IoHandler that demuxes messageReceived events
to the appropriate MessageHandler.
You can freely register and deregister MessageHandlers using
addMessageHandler(Class, MessageHandler) and
removeMessageHandler(Class).
When message is received through a call to
messageReceived(IoSession, Object) the class of the
message object will be used to find a MessageHandler for
that particular message type. If no MessageHandler instance can be
found for the immediate class (i.e. message.getClass()) the
interfaces implemented by the immediate class will be searched in depth-first
order. If no match can be found for any of the interfaces the search will be
repeated recursively for the superclass of the immediate class
(i.e. message.getClass().getSuperclass()).
Consider the following type hierarchy (Cx are classes while
Ix are interfaces):
C3 - I7 - I9
| | /\
| I8 I3 I4
|
C2 - I5 - I6
|
C1 - I1 - I2 - I4
| |
| I3
Object
When message is of type C3 this hierarchy will be
searched in the following order:
C3, I7, I8, I9, I3, I4, C2, I5, I6, C1, I1, I2, I3, I4, Object.
For efficiency searches will be cached. Calls to
addMessageHandler(Class, MessageHandler) and
removeMessageHandler(Class) clear this cache.
| Constructor Summary | |
|---|---|
DemuxingIoHandler()
Creates a new instance with no registered MessageHandlers. |
|
| Method Summary | ||
|---|---|---|
|
addMessageHandler(Class<E> type,
MessageHandler<? super E> handler)
Registers a MessageHandler that receives the messages of
the specified type. |
|
protected MessageHandler<Object> |
findHandler(Class type)
|
|
|
getMessageHandler(Class<E> type)
Returns the MessageHandler which is registered to process
the specified type. |
|
Map<Class,MessageHandler> |
getMessageHandlerMap()
Returns the Map which contains all messageType-MessageHandler
pairs registered to this handler. |
|
void |
messageReceived(IoSession session,
Object message)
Forwards the received events into the appropriate MessageHandler
which is registered by addMessageHandler(Class, MessageHandler). |
|
|
removeMessageHandler(Class<E> type)
Deregisters a MessageHandler that receives the messages of
the specified type. |
|
| Methods inherited from class org.apache.mina.common.IoHandlerAdapter |
|---|
exceptionCaught, messageSent, sessionClosed, sessionCreated, sessionIdle, sessionOpened |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public DemuxingIoHandler()
MessageHandlers.
| Method Detail |
|---|
public <E> MessageHandler<? super E> addMessageHandler(Class<E> type,
MessageHandler<? super E> handler)
MessageHandler that receives the messages of
the specified type.
public <E> MessageHandler<? super E> removeMessageHandler(Class<E> type)
MessageHandler that receives the messages of
the specified type.
public <E> MessageHandler<? super E> getMessageHandler(Class<E> type)
MessageHandler which is registered to process
the specified type.
public Map<Class,MessageHandler> getMessageHandlerMap()
Map which contains all messageType-MessageHandler
pairs registered to this handler.
public void messageReceived(IoSession session,
Object message)
throws Exception
MessageHandler
which is registered by addMessageHandler(Class, MessageHandler).
messageReceived in interface IoHandlermessageReceived in class IoHandlerAdapterExceptionprotected MessageHandler<Object> findHandler(Class type)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||