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
 
Constructor Summary
SocketPastryNodeFactory(NodeIdFactory nf, int startPort)
          Constructor.
 
Method Summary
 NodeHandle generateNodeHandle(java.net.InetSocketAddress address)
          Method which contructs a node handle (using the socket protocol) for the node at address NodeHandle.
 LeafSet getLeafSet(NodeHandle handle)
          This method returns the remote leafset of the provided handle to the caller, in a protocol-dependent fashion.
 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.
 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.
 SourceRoute[] getRoutes(NodeHandle handle)
          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)
          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
 
Methods inherited from class rice.pastry.PastryNodeFactory
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,
                               int startPort)
Constructor.

Parameters:
nf - The factory for building node ids
startPort - The port to start creating nodes on
Method Detail

getRoutes

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

Parameters:
handle - The node to connect to
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

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

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

generateNodeHandle

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

Specified by:
generateNodeHandle in class DistPastryNodeFactory
Parameters:
address - The address of the remote node.
Returns:
A NodeHandle cooresponding to that address

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)
                                                   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
Returns:
DESCRIBE THE RETURN VALUE
Throws:
java.io.IOException - DESCRIBE THE EXCEPTION

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection