Rice Pastry API

rice.pastry.messaging
Class MessageDispatch

java.lang.Object
  extended by rice.pastry.messaging.MessageDispatch
All Implemented Interfaces:
Destructable

public class MessageDispatch
extends java.lang.Object
implements Destructable

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 4654 2009-01-08 16:33:07Z jeffh $
Author:
Jeff Hoye, Andrew Ladd

Field Summary
protected  Deserializer deserializer
          Also held by the transport layer to allow it to deserialize the messages.
protected  PastryNode localNode
           
protected  Logger logger
           
 
Constructor Summary
MessageDispatch(PastryNode pn, Deserializer deserializer)
          Constructor.
 
Method Summary
 void destroy()
           
 boolean dispatchMessage(Message msg)
          Dispatches a message to the appropriate receiver.
 PastryAppl getDestination(Message msg)
           
 PastryAppl getDestinationByAddress(int addr)
           
 void registerReceiver(int address, PastryAppl 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

logger

protected Logger logger

deserializer

protected Deserializer deserializer
Also held by the transport layer to allow it to deserialize the messages.

Constructor Detail

MessageDispatch

public MessageDispatch(PastryNode pn,
                       Deserializer deserializer)
Constructor.

Method Detail

registerReceiver

public void registerReceiver(int address,
                             PastryAppl receiver)
Registers a receiver with the mail service.

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

getDestination

public PastryAppl getDestination(Message msg)

getDestinationByAddress

public PastryAppl getDestinationByAddress(int 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.

destroy

public void destroy()
Specified by:
destroy in interface Destructable

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection