Rice Pastry API

rice.p2p.multiring
Class MultiringEndpoint

java.lang.Object
  extended byrice.p2p.multiring.MultiringEndpoint
All Implemented Interfaces:
Endpoint, NodeHandleReader

public class MultiringEndpoint
extends java.lang.Object
implements Endpoint

Version:
$Id: MultiringEndpoint.java 3274 2006-05-15 16:17:47Z jeffh $
Author:
Alan Mislove

Field Summary
protected  Application application
          The application this endpoint is for
protected  Endpoint endpoint
          The node which this mulitring node is wrapping
protected  MultiringNode node
          The multiring node supporting this endpoint
 
Constructor Summary
protected MultiringEndpoint(MultiringNode node, Endpoint endpoint, Application application)
          Constructor
 
Method Summary
 void accept(AppSocketReceiver receiver)
          DESCRIBE THE METHOD
 NodeHandle coalesce(NodeHandle handle)
          DESCRIBE THE METHOD
 void connect(NodeHandle handle, AppSocketReceiver receiver, int timeout)
          Passthrough to sub endpoint.
protected  void deliver(RingId id, Message target)
          Internal method which delivers the message to the application
 MessageDeserializer getDeserializer()
          Gets the Deserializer attribute of the MultiringEndpoint object
 Environment getEnvironment()
          Gets the Environment attribute of the MultiringEndpoint object
 Id getId()
          Returns this node's id, which is its identifier in the namespace.
 java.lang.String getInstance()
          Returns a unique instance name of this endpoint, sort of a mailbox name for this application.
 NodeHandle getLocalNodeHandle()
          Returns a handle to the local node below this endpoint.
 NodeHandleSet localLookup(Id id, int num, boolean safe)
          This call produces a list of nodes that can be used as next hops on a route towards the given id, such that the resulting route satisfies the overlay protocol's bounds on the number of hops taken.
 NodeHandleSet neighborSet(int num)
          This methods returns an unordered set of nodehandles on which are neighbors of the local node in the id space.
 void process(Executable task, Continuation command)
          Schedules a job for processing on the dedicated processing thread.
 IdRange range(NodeHandle handle, int rank, Id lkey)
          This operation provides information about ranges of keys for which the node is currently a rank-root.
 IdRange range(NodeHandle handle, int rank, Id lkey, boolean cumulative)
          This operation provides information about ranges of keys for which the node is currently a rank-root.
 Id readId(InputBuffer buf, short type)
          DESCRIBE THE METHOD
 IdRange readIdRange(InputBuffer buf)
          DESCRIBE THE METHOD
 NodeHandle readNodeHandle(InputBuffer buf)
          DESCRIBE THE METHOD
 NodeHandleSet readNodeHandleSet(InputBuffer buf, short type)
          DESCRIBE THE METHOD
 void register()
          DESCRIBE THE METHOD
 NodeHandleSet replicaSet(Id id, int maxRank)
          This methods returns an ordered set of nodehandles on which replicas of an object with a given id can be stored.
 NodeHandleSet replicaSet(Id id, int maxRank, NodeHandle root, NodeHandleSet set)
          This methods returns an ordered set of nodehandles on which replicas of an object with a given id can be stored.
 void route(Id id, Message message, NodeHandle hint)
          This method makes an attempt to route the message to the root of the given id.
 void route(Id id, RawMessage message, NodeHandle hint)
          DESCRIBE THE METHOD
 CancellableTask scheduleMessage(Message message, long delay)
          Schedules a message to be delivered to this application after the provided number of milliseconds.
 CancellableTask scheduleMessage(Message message, long delay, long period)
          Schedules a message to be delivered to this application every period number of milliseconds, after delay number of miliseconds have passed.
 CancellableTask scheduleMessageAtFixedRate(Message message, long delay, long period)
          DESCRIBE THE METHOD
 void setDeserializer(MessageDeserializer md)
          Sets the Deserializer attribute of the MultiringEndpoint object
 java.lang.String toString()
          DESCRIBE THE METHOD
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

node

protected MultiringNode node
The multiring node supporting this endpoint


application

protected Application application
The application this endpoint is for


endpoint

protected Endpoint endpoint
The node which this mulitring node is wrapping

Constructor Detail

MultiringEndpoint

protected MultiringEndpoint(MultiringNode node,
                            Endpoint endpoint,
                            Application application)
Constructor

Parameters:
node - The node to base this node off of
endpoint - DESCRIBE THE PARAMETER
application - DESCRIBE THE PARAMETER
Method Detail

getId

public Id getId()
Returns this node's id, which is its identifier in the namespace.

Specified by:
getId in interface Endpoint
Returns:
The local node's id

getLocalNodeHandle

public NodeHandle getLocalNodeHandle()
Returns a handle to the local node below this endpoint. 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 Endpoint
Returns:
A NodeHandle referring to the local node.

getInstance

public java.lang.String getInstance()
Returns a unique instance name of this endpoint, sort of a mailbox name for this application.

Specified by:
getInstance in interface Endpoint
Returns:
The unique instance name of this application

getEnvironment

public Environment getEnvironment()
Gets the Environment attribute of the MultiringEndpoint object

Specified by:
getEnvironment in interface Endpoint
Returns:
The Environment value

getDeserializer

public MessageDeserializer getDeserializer()
Gets the Deserializer attribute of the MultiringEndpoint object

Specified by:
getDeserializer in interface Endpoint
Returns:
The Deserializer value

setDeserializer

public void setDeserializer(MessageDeserializer md)
Sets the Deserializer attribute of the MultiringEndpoint object

Specified by:
setDeserializer in interface Endpoint
Parameters:
md - The new Deserializer value

route

public void route(Id id,
                  Message message,
                  NodeHandle hint)
This method makes an attempt to route the message to the root of the given id. The hint handle will be the first hop in the route. If the id field is null, then the message is routed directly to the given node, and delivers the message there. If the hint field is null, then this method makes an attempt to route the message to the root of the given id. Note that one of the id and hint fields can be null, but not both.

Specified by:
route in interface Endpoint
Parameters:
id - The destination Id of the message.
message - The message to deliver
hint - The first node to send this message to, optional

route

public void route(Id id,
                  RawMessage message,
                  NodeHandle hint)
DESCRIBE THE METHOD

Specified by:
route in interface Endpoint
Parameters:
id - DESCRIBE THE PARAMETER
message - DESCRIBE THE PARAMETER
hint - DESCRIBE THE PARAMETER

localLookup

public NodeHandleSet localLookup(Id id,
                                 int num,
                                 boolean safe)
This call produces a list of nodes that can be used as next hops on a route towards the given id, such that the resulting route satisfies the overlay protocol's bounds on the number of hops taken. If the safe flag is specified, then the fraction of faulty nodes returned is no higher than the fraction of faulty nodes in the overlay.

Specified by:
localLookup in interface Endpoint
Parameters:
id - The destination id.
num - The number of nodes to return.
safe - Whether or not to return safe nodes.
Returns:
DESCRIBE THE RETURN VALUE

neighborSet

public NodeHandleSet neighborSet(int num)
This methods returns an unordered set of nodehandles on which are neighbors of the local node in the id space. Up to num handles are returned.

Specified by:
neighborSet in interface Endpoint
Parameters:
num - The number of desired handle to return.
Returns:
DESCRIBE THE RETURN VALUE

replicaSet

public NodeHandleSet replicaSet(Id id,
                                int maxRank)
This methods returns an ordered set of nodehandles on which replicas of an object with a given id can be stored. The call returns nodes up to and including a node with maxRank.

Specified by:
replicaSet in interface Endpoint
Parameters:
id - The object's id.
maxRank - The number of desired replicas.
Returns:
DESCRIBE THE RETURN VALUE

replicaSet

public NodeHandleSet replicaSet(Id id,
                                int maxRank,
                                NodeHandle root,
                                NodeHandleSet set)
This methods returns an ordered set of nodehandles on which replicas of an object with a given id can be stored. The call returns nodes up to and including a node with maxRank. This call also allows the application to provide a remove "center" node, as well as other nodes in the vicinity.

Specified by:
replicaSet in interface Endpoint
Parameters:
id - The object's id.
maxRank - The number of desired replicas.
set - The set of other nodes around the root handle
root - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE

range

public IdRange range(NodeHandle handle,
                     int rank,
                     Id lkey)
This operation provides information about ranges of keys for which the node is currently a rank-root. The operations returns null if the range could not be determined, the range otherwise. It is an error to query the range of a node not present in the neighbor set as returned bythe update upcall or the neighborSet call. Certain implementations may return an error if rank is greater than zero. Some protocols may have multiple, disjoint ranges of keys for which a given node is responsible. The parameter lkey allows the caller to specify which region should be returned. If the node referenced by is responsible for key lkey, then the resulting range includes lkey. Otherwise, the result is the nearest range clockwise from lkey for which is responsible.

Specified by:
range in interface Endpoint
Parameters:
handle - The handle whose range to check.
rank - The root rank.
lkey - An "index" in case of multiple ranges.
Returns:
DESCRIBE THE RETURN VALUE

range

public IdRange range(NodeHandle handle,
                     int rank,
                     Id lkey,
                     boolean cumulative)
This operation provides information about ranges of keys for which the node is currently a rank-root. The operations returns null if the range could not be determined, the range otherwise. It is an error to query the range of a node not present in the neighbor set as returned bythe update upcall or the neighborSet call. Certain implementations may return an error if rank is greater than zero. Some protocols may have multiple, disjoint ranges of keys for which a given node is responsible. The parameter lkey allows the caller to specify which region should be returned. If the node referenced by is responsible for key lkey, then the resulting range includes lkey. Otherwise, the result is the nearest range clockwise from lkey for which is responsible.

Specified by:
range in interface Endpoint
Parameters:
handle - The handle whose range to check.
rank - The root rank.
lkey - An "index" in case of multiple ranges.
cumulative - Whether to return the cumulative or single range
Returns:
DESCRIBE THE RETURN VALUE

scheduleMessage

public CancellableTask scheduleMessage(Message message,
                                       long delay)
Schedules a message to be delivered to this application after the provided number of milliseconds.

Specified by:
scheduleMessage in interface Endpoint
Parameters:
message - The message to be delivered
delay - The number of milliseconds to wait before delivering the message
Returns:
DESCRIBE THE RETURN VALUE

scheduleMessage

public CancellableTask scheduleMessage(Message message,
                                       long delay,
                                       long period)
Schedules a message to be delivered to this application every period number of milliseconds, after delay number of miliseconds have passed.

Specified by:
scheduleMessage in interface Endpoint
Parameters:
message - The message to be delivered
delay - The number of milliseconds to wait before delivering the fist message
period - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE

scheduleMessageAtFixedRate

public CancellableTask scheduleMessageAtFixedRate(Message message,
                                                  long delay,
                                                  long period)
DESCRIBE THE METHOD

Specified by:
scheduleMessageAtFixedRate in interface Endpoint
Parameters:
message - DESCRIBE THE PARAMETER
delay - DESCRIBE THE PARAMETER
period - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE

process

public void process(Executable task,
                    Continuation command)
Schedules a job for processing on the dedicated processing thread. 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.

Specified by:
process in interface Endpoint
Parameters:
task - The task to run on the processing thread
command - The command to return the result to once it's done

deliver

protected void deliver(RingId id,
                       Message target)
Internal method which delivers the message to the application

Parameters:
id - The target id
target - DESCRIBE THE PARAMETER

connect

public void connect(NodeHandle handle,
                    AppSocketReceiver receiver,
                    int timeout)
Passthrough to sub endpoint.

Specified by:
connect in interface Endpoint
Parameters:
handle - DESCRIBE THE PARAMETER
receiver - DESCRIBE THE PARAMETER
timeout - DESCRIBE THE PARAMETER

accept

public void accept(AppSocketReceiver receiver)
DESCRIBE THE METHOD

Specified by:
accept in interface Endpoint
Parameters:
receiver - DESCRIBE THE PARAMETER

readId

public Id readId(InputBuffer buf,
                 short type)
          throws java.io.IOException
DESCRIBE THE METHOD

Specified by:
readId in interface Endpoint
Parameters:
buf - DESCRIBE THE PARAMETER
type - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

readNodeHandle

public NodeHandle readNodeHandle(InputBuffer buf)
                          throws java.io.IOException
DESCRIBE THE METHOD

Specified by:
readNodeHandle in interface NodeHandleReader
Parameters:
buf - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

readIdRange

public IdRange readIdRange(InputBuffer buf)
                    throws java.io.IOException
DESCRIBE THE METHOD

Specified by:
readIdRange in interface Endpoint
Parameters:
buf - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

coalesce

public NodeHandle coalesce(NodeHandle handle)
DESCRIBE THE METHOD

Specified by:
coalesce in interface NodeHandleReader
Parameters:
handle - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE

readNodeHandleSet

public NodeHandleSet readNodeHandleSet(InputBuffer buf,
                                       short type)
                                throws java.io.IOException
DESCRIBE THE METHOD

Specified by:
readNodeHandleSet in interface Endpoint
Parameters:
buf - DESCRIBE THE PARAMETER
type - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

toString

public java.lang.String toString()
DESCRIBE THE METHOD

Returns:
DESCRIBE THE RETURN VALUE

register

public void register()
DESCRIBE THE METHOD

Specified by:
register in interface Endpoint

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection