gumbo.net.msg
Class MessageRouter

java.lang.Object
  |
  +--gumbo.net.msg.MessageRouter

public class MessageRouter
extends java.lang.Object

DirectRouters messages to message listeners. Message listeners are registered by message type, with only messages of that class or sub-class being received by the listener.

A given listener can register more than once, each time with a different message type. If a given listener registers for a given message type and its super-type, when a message of the given type is received the listener will be notified twice, once for the type and once for the super-type.

Version:
$Revision: 1.8 $
Author:
Jon Barrilleaux (jonb@jmbaai.com) of JMB and Associates Inc.
See Also:
MessageRouterThread

Constructor Summary
MessageRouter()
           
 
Method Summary
 void addMessageHandler(MessageHandler handler)
          Adds a message handler to this router's list.
 void addMessageListener(java.lang.Class type, MessageListener listener)
          Adds a message listener to this router's list.
 void clearMessageListeners()
          Removes all message listeners of all types.
 void removeMessageHandler(MessageHandler handler)
          Removes a message handler from this router's list.
 void removeMessageListener(java.lang.Class type, MessageListener listener)
          Removes the specified message listener entry (type-listener pair).
 void removeMessageListeners(java.lang.Class type)
          Removes all message listener entries (type-listener pairs) containing the specified message type or sub-type.
 void removeMessageListeners(MessageListener listener)
          Removes all message listener entries (type-listener pairs) containing the specified message listener.
 void routeMessage(Message msg, MessageWriter writer)
          Routes a message to all listeners interested in messages of its type or super-type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MessageRouter

public MessageRouter()
Method Detail

addMessageHandler

public void addMessageHandler(MessageHandler handler)
Adds a message handler to this router's list. The handler will be notified when a message with any of its types or sub-types is received. All listeners are notified in the order they are added. Duplicate entries (type-listener pairs) are silently ignored.

Parameters:
handler - The message handler. Never null.

removeMessageHandler

public void removeMessageHandler(MessageHandler handler)
Removes a message handler from this router's list. Missing entries (type-listener pairs) are silently ignored.

Parameters:
handler - The message handler. Never null.

addMessageListener

public void addMessageListener(java.lang.Class type,
                               MessageListener listener)
Adds a message listener to this router's list. The listener will be notified when a message of the specified type or sub-type is received. All listeners are notified in the order they are added. Duplicate entries (type-listener pairs) are silently ignored.

Parameters:
type - Type of message. Never null.
listener - The message listener. Never null.

removeMessageListener

public void removeMessageListener(java.lang.Class type,
                                  MessageListener listener)
Removes the specified message listener entry (type-listener pair). Note that entries with sub-types of the type are not affected. Missing entries (type-listener pairs) are silently ignored.

Parameters:
type - Type of message. Never null.
listener - The message listener. Never null.

removeMessageListeners

public void removeMessageListeners(java.lang.Class type)
Removes all message listener entries (type-listener pairs) containing the specified message type or sub-type. Silently ignores missing type.

Parameters:
type - Type of message. Never null.

removeMessageListeners

public void removeMessageListeners(MessageListener listener)
Removes all message listener entries (type-listener pairs) containing the specified message listener. Silently ignores missing listener.

Parameters:
listener - The message listener. Never null.

clearMessageListeners

public void clearMessageListeners()
Removes all message listeners of all types.


routeMessage

public void routeMessage(Message msg,
                         MessageWriter writer)
Routes a message to all listeners interested in messages of its type or super-type.

Parameters:
msg - Message to be routed to listeners. Never null.
writer - Message writer to be used by listeners for sending a reply message (on the router thread). Null if none.