ePOST API

rice.pastry.messaging
Class MessageDispatch

java.lang.Object
  extended by rice.pastry.messaging.MessageDispatch

public class MessageDispatch
extends java.lang.Object

An object which remembers the mapping from names to MessageReceivers and dispatches messages by request. For consistent routing, modified to only deliver messages to applications if the PastryNode.isReady(). It will still deliver messages to any non-PastryAppl because these "services" may be needed to boot the node into the ring. Any messages to a PastryAppl will be buffered until the node goes ready. TODO: We need to make it explicit which apps can receive messages before PastryNode.isReady().

Version:
$Id: MessageDispatch.java 3138 2006-03-15 13:12:06Z jeffh $
Author:
Jeff Hoye, Andrew Ladd

Field Summary
static java.lang.String BUFFER_IF_NOT_READY_PARAM
           
static java.lang.String BUFFER_SIZE_PARAM
           
protected  PastryNode localNode
           
protected  Logger logger
           
 
Constructor Summary
MessageDispatch(PastryNode pn)
          Constructor.
 
Method Summary
 void deliverAllBufferedMessages()
          Called when PastryNode.isReady() becomes true.
protected  void deliverBuffered(Address address)
          Deliveres all buffered messages for the address.
 void destroy()
           
 boolean dispatchMessage(Message msg)
          Dispatches a message to the appropriate receiver.
 MessageReceiver getDestination(Message msg)
           
 MessageReceiver getDestinationByAddress(Address addr)
           
 void registerReceiver(Address address, MessageReceiver receiver)
          Registers a receiver with the mail service.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

localNode

protected PastryNode localNode

BUFFER_IF_NOT_READY_PARAM

public static final java.lang.String BUFFER_IF_NOT_READY_PARAM
See Also:
Constant Field Values

BUFFER_SIZE_PARAM

public static final java.lang.String BUFFER_SIZE_PARAM
See Also:
Constant Field Values

logger

protected Logger logger
Constructor Detail

MessageDispatch

public MessageDispatch(PastryNode pn)
Constructor.

Method Detail

registerReceiver

public void registerReceiver(Address address,
                             MessageReceiver receiver)
Registers a receiver with the mail service.

Parameters:
name - a name for a receiver.
receiver - the receiver.

getDestination

public MessageReceiver getDestination(Message msg)

getDestinationByAddress

public MessageReceiver getDestinationByAddress(Address addr)

dispatchMessage

public boolean dispatchMessage(Message msg)
Dispatches a message to the appropriate receiver. It will buffer the message under the following conditions: 1) The MessageReceiver is not yet registered. 2) The MessageReceiver is a PastryAppl, and localNode.isReady() == false

Parameters:
msg - the message.
Returns:
true if message could be dispatched, false otherwise.

deliverBuffered

protected void deliverBuffered(Address address)
Deliveres all buffered messages for the address. Unless: 1) The MR for the address is still null. 2) The MR is a PastryAppl and localNode.isReady() == false

Parameters:
address -

deliverAllBufferedMessages

public void deliverAllBufferedMessages()
Called when PastryNode.isReady() becomes true. Delivers all buffered messages.


destroy

public void destroy()

ePOST API

Copyright © 2001-2005 - Rice Pastry.