Rice Pastry API

rice.pastry.socket
Class SocketPastryNodeFactory

java.lang.Object
  extended byrice.pastry.PastryNodeFactory
      extended byrice.pastry.dist.DistPastryNodeFactory
          extended byrice.pastry.socket.SocketPastryNodeFactory

public class SocketPastryNodeFactory
extends DistPastryNodeFactory

Pastry node factory for Socket-linked nodes.

Version:
$Id: SocketPastryNodeFactory.java,v 1.6 2004/03/08 19:53:57 amislove Exp $
Author:
Alan Mislove

Field Summary
 
Fields inherited from class rice.pastry.dist.DistPastryNodeFactory
PROTOCOL_DEFAULT, PROTOCOL_SOCKET
 
Fields inherited from class rice.pastry.PastryNodeFactory
lSetSize, rtBase, rtMax
 
Constructor Summary
SocketPastryNodeFactory(NodeIdFactory nf, java.net.InetAddress bindAddress, int startPort, Environment env)
          Constructor.
SocketPastryNodeFactory(NodeIdFactory nf, int startPort, Environment env)
          Constructor for SocketPastryNodeFactory.
 
Method Summary
 NodeHandle generateNodeHandle(java.net.InetSocketAddress address)
          Method which contructs a node handle (using the socket protocol) for the node at address NodeHandle.
 CancellableTask generateNodeHandle(java.net.InetSocketAddress address, Continuation c)
          DESCRIBE THE METHOD
 NodeHandle generateNodeHandle(java.net.InetSocketAddress address, int timeout)
          Way to generate a NodeHandle with a maximum timeout to receive the result.
 LeafSet getLeafSet(NodeHandle handle)
          This method returns the remote leafset of the provided handle to the caller, in a protocol-dependent fashion.
 CancellableTask getLeafSet(NodeHandle handle, Continuation c)
          Gets the LeafSet attribute of the SocketPastryNodeFactory object
 int getProximity(NodeHandle local, NodeHandle handle)
          This method determines and returns the proximity of the current local node the provided NodeHandle.
protected  Message getResponse(java.net.InetSocketAddress address, Message message)
          This method anonymously sends the given message to the remote address, blocks until a response is received, and then closes the socket and returns the response.
protected  CancellableTask getResponse(java.net.InetSocketAddress address, Message message, Continuation c)
          Gets the Response attribute of the SocketPastryNodeFactory object
 RouteSet[] getRouteRow(NodeHandle handle, int row)
          This method returns the remote route row of the provided handle to the caller, in a protocol-dependent fashion.
 CancellableTask getRouteRow(NodeHandle handle, int row, Continuation c)
          Gets the RouteRow attribute of the SocketPastryNodeFactory object
 SourceRoute[] getRoutes(NodeHandle handle, NodeHandle local)
          This method returns the routes a remote node is using
 PastryNode newNode(NodeHandle bootstrap)
          Method which creates a Pastry node from the next port with a randomly generated NodeId.
 PastryNode newNode(NodeHandle bootstrap, java.net.InetSocketAddress proxy)
          Method which creates a Pastry node from the next port with a randomly generated NodeId.
 PastryNode newNode(NodeHandle bootstrap, NodeId nodeId)
          Method which creates a Pastry node from the next port with a randomly generated NodeId.
 PastryNode newNode(NodeHandle bootstrap, NodeId nodeId, java.net.InetSocketAddress pAddress)
          Method which creates a Pastry node from the next port with a randomly generated NodeId.
static java.net.InetSocketAddress verifyConnection(int timeout, java.net.InetSocketAddress local, java.net.InetSocketAddress[] existing, Environment env)
          Method which can be used to test the connectivity contstrains of the local node.
 
Methods inherited from class rice.pastry.dist.DistPastryNodeFactory
getFactory, getNodeHandle, getNodeHandle, getNodeHandle, getNodeHandle, getNodeHandle, getNodeHandle
 
Methods inherited from class rice.pastry.PastryNodeFactory
getEnvironment, getNearest
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SocketPastryNodeFactory

public SocketPastryNodeFactory(NodeIdFactory nf,
                               java.net.InetAddress bindAddress,
                               int startPort,
                               Environment env)
                        throws java.io.IOException
Constructor. Here is order for bind address 1) bindAddress parameter 2) if bindAddress is null, then parameter: socket_bindAddress (if it exists) 3) if socket_bindAddress doesn't exist, then InetAddress.getLocalHost()

Parameters:
nf - The factory for building node ids
bindAddress - which address to bind to
startPort - The port to start creating nodes on
env - The environment.
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

SocketPastryNodeFactory

public SocketPastryNodeFactory(NodeIdFactory nf,
                               int startPort,
                               Environment env)
                        throws java.io.IOException
Constructor for SocketPastryNodeFactory.

Parameters:
nf - DESCRIBE THE PARAMETER
startPort - DESCRIBE THE PARAMETER
env - DESCRIBE THE PARAMETER
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION
Method Detail

getRoutes

public SourceRoute[] getRoutes(NodeHandle handle,
                               NodeHandle local)
                        throws java.io.IOException
This method returns the routes a remote node is using

Parameters:
handle - The node to connect to
local - DESCRIBE THE PARAMETER
Returns:
The leafset of the remote node
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

getLeafSet

public LeafSet getLeafSet(NodeHandle handle)
                   throws java.io.IOException
This method returns the remote leafset of the provided handle to the caller, in a protocol-dependent fashion. Note that this method may block while sending the message across the wire.

Specified by:
getLeafSet in class PastryNodeFactory
Parameters:
handle - The node to connect to
Returns:
The leafset of the remote node
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

getLeafSet

public CancellableTask getLeafSet(NodeHandle handle,
                                  Continuation c)
Gets the LeafSet attribute of the SocketPastryNodeFactory object

Specified by:
getLeafSet in class PastryNodeFactory
Parameters:
handle - DESCRIBE THE PARAMETER
c - DESCRIBE THE PARAMETER
Returns:
The LeafSet value

getRouteRow

public RouteSet[] getRouteRow(NodeHandle handle,
                              int row)
                       throws java.io.IOException
This method returns the remote route row of the provided handle to the caller, in a protocol-dependent fashion. Note that this method may block while sending the message across the wire.

Specified by:
getRouteRow in class PastryNodeFactory
Parameters:
handle - The node to connect to
row - The row number to retrieve
Returns:
The route row of the remote node
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

getRouteRow

public CancellableTask getRouteRow(NodeHandle handle,
                                   int row,
                                   Continuation c)
Gets the RouteRow attribute of the SocketPastryNodeFactory object

Specified by:
getRouteRow in class PastryNodeFactory
Parameters:
handle - DESCRIBE THE PARAMETER
row - DESCRIBE THE PARAMETER
c - DESCRIBE THE PARAMETER
Returns:
The RouteRow value

getProximity

public int getProximity(NodeHandle local,
                        NodeHandle handle)
This method determines and returns the proximity of the current local node the provided NodeHandle. This will need to be done in a protocol- dependent fashion and may need to be done in a special way.

Specified by:
getProximity in class PastryNodeFactory
Parameters:
handle - The handle to determine the proximity of
local - DESCRIBE THE PARAMETER
Returns:
The proximity of the provided handle

getResponse

protected Message getResponse(java.net.InetSocketAddress address,
                              Message message)
                       throws java.io.IOException
This method anonymously sends the given message to the remote address, blocks until a response is received, and then closes the socket and returns the response.

Parameters:
address - The address to send to
message - The message to send
Returns:
The response
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

getResponse

protected CancellableTask getResponse(java.net.InetSocketAddress address,
                                      Message message,
                                      Continuation c)
Gets the Response attribute of the SocketPastryNodeFactory object

Parameters:
address - DESCRIBE THE PARAMETER
message - DESCRIBE THE PARAMETER
c - DESCRIBE THE PARAMETER
Returns:
The Response value

generateNodeHandle

public NodeHandle generateNodeHandle(java.net.InetSocketAddress address,
                                     int timeout)
Way to generate a NodeHandle with a maximum timeout to receive the result. Helper funciton for using the non-blocking version. However this method behaves as a blocking call.

Specified by:
generateNodeHandle in class DistPastryNodeFactory
Parameters:
address -
timeout - maximum time to return the result. <= 0 will use the blocking version.
Returns:

generateNodeHandle

public NodeHandle generateNodeHandle(java.net.InetSocketAddress address)
Method which contructs a node handle (using the socket protocol) for the node at address NodeHandle.

Parameters:
address - The address of the remote node.
Returns:
A NodeHandle cooresponding to that address

generateNodeHandle

public CancellableTask generateNodeHandle(java.net.InetSocketAddress address,
                                          Continuation c)
DESCRIBE THE METHOD

Specified by:
generateNodeHandle in class DistPastryNodeFactory
Parameters:
address - DESCRIBE THE PARAMETER
c - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE

newNode

public PastryNode newNode(NodeHandle bootstrap)
Method which creates a Pastry node from the next port with a randomly generated NodeId.

Specified by:
newNode in class DistPastryNodeFactory
Parameters:
bootstrap - Node handle to bootstrap from.
Returns:
A node with a random ID and next port number.

newNode

public PastryNode newNode(NodeHandle bootstrap,
                          NodeId nodeId)
Method which creates a Pastry node from the next port with a randomly generated NodeId.

Specified by:
newNode in class DistPastryNodeFactory
Parameters:
bootstrap - Node handle to bootstrap from.
nodeId - DESCRIBE THE PARAMETER
Returns:
A node with a random ID and next port number.

newNode

public PastryNode newNode(NodeHandle bootstrap,
                          java.net.InetSocketAddress proxy)
Method which creates a Pastry node from the next port with a randomly generated NodeId.

Specified by:
newNode in class DistPastryNodeFactory
Parameters:
bootstrap - Node handle to bootstrap from.
proxy - DESCRIBE THE PARAMETER
Returns:
A node with a random ID and next port number.

newNode

public PastryNode newNode(NodeHandle bootstrap,
                          NodeId nodeId,
                          java.net.InetSocketAddress pAddress)
Method which creates a Pastry node from the next port with a randomly generated NodeId.

Specified by:
newNode in class DistPastryNodeFactory
Parameters:
bootstrap - Node handle to bootstrap from.
nodeId - DESCRIBE THE PARAMETER
pAddress - DESCRIBE THE PARAMETER
Returns:
A node with a random ID and next port number.

verifyConnection

public static java.net.InetSocketAddress verifyConnection(int timeout,
                                                          java.net.InetSocketAddress local,
                                                          java.net.InetSocketAddress[] existing,
                                                          Environment env)
                                                   throws java.io.IOException
Method which can be used to test the connectivity contstrains of the local node. This (optional) method is designed to be called by applications to ensure that the local node is able to connect through the network - checks can be done to check TCP/UDP connectivity, firewall setup, etc... If the method works, then nothing should be done and the method should return. If an error condition is detected, an exception should be thrown.

Parameters:
timeout - DESCRIBE THE PARAMETER
local - DESCRIBE THE PARAMETER
existing - DESCRIBE THE PARAMETER
env - DESCRIBE THE PARAMETER
Returns:
DESCRIBE THE RETURN VALUE
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection