Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Rice Pastry API
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## rice.pastry
Class PastryNode

    java.lang.Object
      java.util.Observable
          rice.pastry.PastryNode

All Implemented Interfaces:
  LivenessProvider<NodeHandle>, ProximityProvider<NodeHandle>, Destructable, Node, NodeHandleFactory

Direct Known Subclasses:
  TLPastryNode

    public abstract class PastryNode

extends java.util.Observable
implements Node, Destructable, NodeHandleFactory, LivenessProvider<NodeHandle>, ProximityProvider<NodeHandle>

A Pastry node is single entity in the pastry network.

Version:
  $Id: PastryNode.java 3992 2007-12-02 20:09:18Z jeffh $
Author:
  Andrew Ladd

Field Summary
`protected java.util.Vector` | `apps`
`protected boolean` | `isDestroyed`
`protected boolean` | `joinFailed`
`protected JoinFailedException` | `joinFailedReason`
`protected LeafSet` | `leafSet`
`protected NodeHandle` | `localhandle`
`protected Logger` | `logger`
`protected Id` | `myNodeId`
`protected Router` | `router`
`protected RoutingTable` | `routeSet`

Fields inherited from interface org.mpisws.p2p.transport.proximity.ProximityProvider
`DEFAULT_PROXIMITY`

Constructor Summary
`protected` | `PastryNode(Id id, Environment e)` Constructor, with NodeId.

Method Summary
`Destructable` | `addDestructable(Destructable d)`
`void` | `addLeafSetListener(NodeSetListener listener)`
`void` | `addLeafSetObserver(java.util.Observer o)` Deprecated. use addLeafSetListener
`void` | `addNetworkListener(NetworkListener nl)`
`void` | `addRouteSetListener(NodeSetListener listener)`
`void` | `addRouteSetObserver(java.util.Observer o)` Deprecated. use addRouteSetListener
`Endpoint` | `buildEndpoint(Application application, java.lang.String instance)` Same as register application, but returns an unregistered Endpoint.
`abstract NodeHandle` | `coalesce(NodeHandle newHandle)` Needed for legacy java deserialization of NodeHanlde because we aren't given any other way to do this properly such as a protected constructor.
`abstract SocketRequestHandle` | `connect(NodeHandle handle, AppSocketReceiver receiver, PastryAppl appl, int timeout)` Called by PastryAppl to ask the transport layer to open a Socket to its counterpart on another node.
`void` | `deleteLeafSetListener(NodeSetListener listener)`
`void` | `deleteLeafSetObserver(java.util.Observer o)` Deprecated. use deleteLeafSetListener
`void` | `deleteRouteSetObserver(java.util.Observer o)` Deprecated. use deleteRouteSetListener
`void` | `destroy()` Method which kills a PastryNode.
`abstract Bootstrapper` | `getBootstrapper()`
`ReadyStrategy` | `getDefaultReadyStrategy()` Simple Ready Strategy
`Environment` | `getEnvironment()` Returns the environment.
`Id` | `getId()` Returns the Id of this node
`IdFactory` | `getIdFactory()` Returns a factory for Ids specific to this node's protocol.
`LeafSet` | `getLeafSet()`
`NodeHandle` | `getLocalHandle()`
`NodeHandle` | `getLocalNodeHandle()` Returns a handle to the local node.
`MessageDispatch` | `getMessageDispatch()` FOR TESTING ONLY - DO NOT USE!
`Id` | `getNodeId()`
`Router` | `getRouter()`
`RoutingTable` | `getRoutingTable()`
`boolean` | `isClosest(Id key)` Called by the layered Pastry application to check if the local pastry node is the one that is currently closest to the object key id.
`boolean` | `isReady()`
`boolean` | `joinFailed()` Returns true if there was a fatal error Joining
`void` | `joinFailed(JoinFailedException cje)`
`JoinFailedException` | `joinFailedReason()`
`abstract void` | `nodeIsReady()` Deprecated. use nodeIsReady(boolean)
`void` | `nodeIsReady(boolean state)` Overridden by derived classes, and invoked when the node has joined successfully.
`void` | `notifyReadyObservers()`
`java.lang.String` | `printRouteState()` For debugging: print the internal routing state of the Node.
`void` | `process(Executable task, Continuation command)` Schedules a job for processing on the dedicated processing thread, should one exist.
`abstract int` | `proximity(NodeHandle nh)` The proximity of the node handle.
`void` | `receiveMessage(Message msg)` message receiver interface.
`void` | `receiveMessage(RawMessageDelivery delivery)`
`void` | `registerApp(PastryAppl app)` Registers an application with this pastry node.
`Endpoint` | `registerApplication(Application application, java.lang.String instance)` Deprecated. use buildEndpoint() endpoint.register()
`void` | `registerReceiver(int address, PastryAppl receiver)` Registers a message receiver with this Pastry node.
`boolean` | `removeDestructable(Destructable d)`
`void` | `removeRouteSetListener(NodeSetListener listener)`
`abstract ScheduledMessage` | `scheduleMsg(Message msg, long delay)` Schedule the specified message to be sent to the local node after a specified delay.
`abstract ScheduledMessage` | `scheduleMsg(Message msg, long delay, long period)` Schedule the specified message for repeated fixed-delay delivery to the local node, beginning after the specified delay.
`abstract ScheduledMessage` | `scheduleMsgAtFixedRate(Message msg, long delay, long period)` Schedule the specified message for repeated fixed-rate delivery to the local node, beginning after the specified delay.
`abstract PMessageReceipt` | `send(NodeHandle handle, Message message, PMessageNotification deliverAckToMe, java.util.Map<java.lang.String,java.lang.Object> options)` Deliver message to the NodeHandle.
`void` | `setElements(NodeHandle lh, MessageDispatch md, LeafSet ls, RoutingTable rt, Router router)` Combined accessor method for various members of PastryNode.
`void` | `setMessageDispatch(MessageDispatch md)`
`void` | `setReady()` Overridden by derived classes to initiate the join process
`void` | `setReady(boolean ready)`
`void` | `setReadyStrategy(ReadyStrategy rs)`
`java.lang.String` | `toString()`

Methods inherited from class java.util.Observable
`addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface rice.pastry.NodeHandleFactory
`readNodeHandle`

Methods inherited from interface org.mpisws.p2p.transport.liveness.LivenessProvider
`addLivenessListener, checkLiveness, clearState, getLiveness, removeLivenessListener`

Methods inherited from interface org.mpisws.p2p.transport.proximity.ProximityProvider
`addProximityListener, clearState, proximity, removeProximityListener`

Field Detail

### myNodeId

    protected Id myNodeId

### leafSet

    protected LeafSet leafSet

### routeSet

    protected RoutingTable routeSet

### localhandle

    protected NodeHandle localhandle

### apps

    protected java.util.Vector apps

### logger

    protected Logger logger

### joinFailed

    protected boolean joinFailed

### isDestroyed

    protected boolean isDestroyed

### router

    protected Router router

### joinFailedReason

    protected JoinFailedException joinFailedReason

Constructor Detail

### PastryNode

    protected PastryNode(Id id,
                         Environment e)

  Constructor, with NodeId. Need to set the node's ID before this node is inserted as localHandle.localNode.

Method Detail

### coalesce

    public abstract NodeHandle coalesce(NodeHandle newHandle)

  Description copied from interface: `NodeHandleFactory`
  Needed for legacy java deserialization of NodeHanlde because we aren't given any other way to do this properly such as a protected constructor.

  Specified by:
    `coalesce` in interface `NodeHandleFactory`
  Returns:

### getDefaultReadyStrategy

    public ReadyStrategy getDefaultReadyStrategy()

  Simple Ready Strategy

### setReadyStrategy

    public void setReadyStrategy(ReadyStrategy rs)

### setElements

    public void setElements(NodeHandle lh,
                            MessageDispatch md,
                            LeafSet ls,
                            RoutingTable rt,
                            Router router)

  Combined accessor method for various members of PastryNode. These are generated by node factories, and assigned here. Other elements specific to the wire protocol are assigned via methods set{RMI,Direct}Elements in the respective derived classes.

  Parameters:
    `lh` - Node handle corresponding to this node.
    `sm` - Security manager.
    `md` - Message dispatcher.
    `ls` - Leaf set.
    `rt` - Routing table.

### getLocalNodeHandle

    public NodeHandle getLocalNodeHandle()

  Description copied from interface: `Node`
  Returns a handle to the local node. This node handle is serializable, and can therefore be sent to other nodes in the network and still be valid.

  Specified by:
    `getLocalNodeHandle` in interface `Node`
  Returns:
    A NodeHandle referring to the local node.

### getEnvironment

    public Environment getEnvironment()

  Description copied from interface: `Node`
  Returns the environment. This allows the nodes to be virtualized within the JVM

  Specified by:
    `getEnvironment` in interface `Node`
  Returns:
    the environment for this node/app.

### getLocalHandle

    public NodeHandle getLocalHandle()

### getNodeId

    public Id getNodeId()

### isReady

    public boolean isReady()

### getMessageDispatch

    public MessageDispatch getMessageDispatch()

  FOR TESTING ONLY - DO NOT USE!

### setMessageDispatch

    public void setMessageDispatch(MessageDispatch md)

### addDestructable

    public Destructable addDestructable(Destructable d)

### removeDestructable

    public boolean removeDestructable(Destructable d)

### nodeIsReady

    public abstract void nodeIsReady()

  Deprecated. use nodeIsReady(boolean)

  Overridden by derived classes, and invoked when the node has joined successfully. This one is for backwards compatability. It will soon be deprecated.

### nodeIsReady

    public void nodeIsReady(boolean state)

  Overridden by derived classes, and invoked when the node has joined successfully. This should probably be abstract, but maybe in a later version.

  Parameters:
    `state` - true when the node is ready, false when not

### setReady

    public void setReady()

  Overridden by derived classes to initiate the join process

  Parameters:
    `bootstrap` - Node handle to bootstrap with.

### setReady

    public void setReady(boolean ready)

### notifyReadyObservers

    public void notifyReadyObservers()

### isClosest

    public boolean isClosest(Id key)

  Called by the layered Pastry application to check if the local pastry node is the one that is currently closest to the object key id.

  Parameters:
    `key` - the object key id
  Returns:
    true if the local node is currently the closest to the key.

### getLeafSet

    public LeafSet getLeafSet()

### getRoutingTable

    public RoutingTable getRoutingTable()

### addLeafSetObserver

    public void addLeafSetObserver(java.util.Observer o)

  Deprecated. use addLeafSetListener

  Add a leaf set observer to the Pastry node.

  Parameters:
    `o` - the observer.

### deleteLeafSetObserver

    public void deleteLeafSetObserver(java.util.Observer o)

  Deprecated. use deleteLeafSetListener

  Delete a leaf set observer from the Pastry node.

  Parameters:
    `o` - the observer.

### addLeafSetListener

    public void addLeafSetListener(NodeSetListener listener)

### deleteLeafSetListener

    public void deleteLeafSetListener(NodeSetListener listener)

### addRouteSetObserver

    public void addRouteSetObserver(java.util.Observer o)

  Deprecated. use addRouteSetListener

  Add a route set observer to the Pastry node.

  Parameters:
    `o` - the observer.

### deleteRouteSetObserver

    public void deleteRouteSetObserver(java.util.Observer o)

  Deprecated. use deleteRouteSetListener

  Delete a route set observer from the Pastry node.

  Parameters:
    `o` - the observer.

### addRouteSetListener

    public void addRouteSetListener(NodeSetListener listener)

### removeRouteSetListener

    public void removeRouteSetListener(NodeSetListener listener)

### receiveMessage

    public void receiveMessage(Message msg)

  message receiver interface. synchronized so that the external message processing thread and the leafset/route maintenance thread won't interfere with application messages.

### receiveMessage

    public void receiveMessage(RawMessageDelivery delivery)

### registerReceiver

    public void registerReceiver(int address,
                                 PastryAppl receiver)

  Registers a message receiver with this Pastry node.

  Parameters:
    `cred` - the credentials.
    `address` - the address that the receiver will be at.
    `receiver` - the message receiver.

### registerApp

    public void registerApp(PastryAppl app)

  Registers an application with this pastry node.

  Parameters:
    `app` - the application

### scheduleMsg

    public abstract ScheduledMessage scheduleMsg(Message msg,
                                                 long delay)

  Schedule the specified message to be sent to the local node after a specified delay. Useful to provide timeouts.

  Parameters:
    `msg` - a message that will be delivered to the local node after the specified delay
    `delay` - time in milliseconds before message is to be delivered
  Returns:
    the scheduled event object; can be used to cancel the message

### scheduleMsg

    public abstract ScheduledMessage scheduleMsg(Message msg,
                                                 long delay,
                                                 long period)

  Schedule the specified message for repeated fixed-delay delivery to the local node, beginning after the specified delay. Subsequent executions take place at approximately regular intervals separated by the specified period. Useful to initiate periodic tasks.

  Parameters:
    `msg` - a message that will be delivered to the local node after the specified delay
    `delay` - time in milliseconds before message is to be delivered
    `period` - time in milliseconds between successive message deliveries
  Returns:
    the scheduled event object; can be used to cancel the message

### scheduleMsgAtFixedRate

    public abstract ScheduledMessage scheduleMsgAtFixedRate(Message msg,
                                                            long delay,
                                                            long period)

  Schedule the specified message for repeated fixed-rate delivery to the local node, beginning after the specified delay. Subsequent executions take place at approximately regular intervals, separated by the specified period.

  Parameters:
    `msg` - a message that will be delivered to the local node after the specified delay
    `delay` - time in milliseconds before message is to be delivered
    `period` - time in milliseconds between successive message deliveries
  Returns:
    the scheduled event object; can be used to cancel the message

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### registerApplication

    public Endpoint registerApplication(Application application,
                                        java.lang.String instance)

  Deprecated. use buildEndpoint() endpoint.register()

  This returns a VirtualizedNode specific to the given application and instance name to the application, which the application can then use in order to send an receive messages.

  Specified by:
    `registerApplication` in interface `Node`
  Parameters:
    `application` - The Application
    `instance` - An identifier for a given instance
  Returns:
    The endpoint specific to this applicationk, which can be used for message sending/receiving.

### buildEndpoint

    public Endpoint buildEndpoint(Application application,
                                  java.lang.String instance)

  Description copied from interface: `Node`
  Same as register application, but returns an unregistered Endpoint. This allows the application to finish initialization that may require the endpoint before it receives messages from the network and notification of changes. When then application is ready, it must call endpoint.register() to receive messages.

  Specified by:
    `buildEndpoint` in interface `Node`
  Returns:

### getId

    public Id getId()

  Returns the Id of this node

  Specified by:
    `getId` in interface `Node`
  Returns:
    This node's Id

### getIdFactory

    public IdFactory getIdFactory()

  Returns a factory for Ids specific to this node's protocol.

  Specified by:
    `getIdFactory` in interface `Node`
  Returns:
    A factory for creating Ids.

### process

    public void process(Executable task,
                        Continuation command)

  Schedules a job for processing on the dedicated processing thread, should one exist. CPU intensive jobs, such as encryption, erasure encoding, or bloom filter creation should never be done in the context of the underlying node's thread, and should only be done via this method.

  Parameters:
    `task` - The task to run on the processing thread
    `command` - The command to return the result to once it's done

### destroy

    public void destroy()

  Method which kills a PastryNode. Note, this doesn't implicitly kill the environment. Make sure to call super.destroy() !!!

  Specified by:
    `destroy` in interface `Destructable`

### send

    public abstract PMessageReceipt send(NodeHandle handle,
                                         Message message,
                                         PMessageNotification deliverAckToMe,
                                         java.util.Map<java.lang.String,java.lang.Object> options)

  Deliver message to the NodeHandle.

  Parameters:
    `nh` -
    `m` -
  Returns:

### connect

    public abstract SocketRequestHandle connect(NodeHandle handle,
                                                AppSocketReceiver receiver,
                                                PastryAppl appl,
                                                int timeout)

  Called by PastryAppl to ask the transport layer to open a Socket to its counterpart on another node.

  Parameters:
    `handle` -
    `receiver` -
    `appl` -

### proximity

    public abstract int proximity(NodeHandle nh)

  The proximity of the node handle.

  Parameters:
    `nh` -
  Returns:

### joinFailed

    public void joinFailed(JoinFailedException cje)

### joinFailed

    public boolean joinFailed()

  Returns true if there was a fatal error Joining

  Returns:

### joinFailedReason

    public JoinFailedException joinFailedReason()

### getBootstrapper

    public abstract Bootstrapper getBootstrapper()

### getRouter

    public Router getRouter()

### addNetworkListener

    public void addNetworkListener(NetworkListener nl)

### printRouteState

    public java.lang.String printRouteState()

  Description copied from interface: `Node`
  For debugging: print the internal routing state of the Node.

  Specified by:
    `printRouteState` in interface `Node`
  Returns:

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Rice Pastry API
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2005 - Rice Pastry.