ePOST API

rice.pastry.socket
Class SocketPastryNodeFactory

java.lang.Object
  extended by rice.pastry.PastryNodeFactory
      extended by rice.pastry.dist.DistPastryNodeFactory
          extended by rice.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
protected  int findFireWallPolicy
           
protected  int testFireWallPolicy
           
 
Fields inherited from class rice.pastry.dist.DistPastryNodeFactory
PROTOCOL_DEFAULT, PROTOCOL_SOCKET
 
Fields inherited from class rice.pastry.PastryNodeFactory
logger, lSetSize, pingCache, rtBase, rtMax
 
Constructor Summary
SocketPastryNodeFactory(NodeIdFactory nf, java.net.InetAddress bindAddress, int startPort, Environment env)
          Constructor.
SocketPastryNodeFactory(NodeIdFactory nf, int startPort, Environment env)
           
 
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)
           
 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)
          Non-blocking version.
 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)
           
 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)
          Non-blocking version.
 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.
 
Methods inherited from class rice.pastry.dist.DistPastryNodeFactory
getFactory, getNodeHandle, getNodeHandle, getNodeHandle, getNodeHandle, getNodeHandle, getNodeHandle
 
Methods inherited from class rice.pastry.PastryNodeFactory
getEnvironment, getNearest, proximity
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

testFireWallPolicy

protected int testFireWallPolicy

findFireWallPolicy

protected int findFireWallPolicy
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

SocketPastryNodeFactory

public SocketPastryNodeFactory(NodeIdFactory nf,
                               int startPort,
                               Environment env)
                        throws java.io.IOException
Throws:
java.io.IOException
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
Returns:
The leafset of the remote node
Throws:
java.io.IOException

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

getLeafSet

public CancellableTask getLeafSet(NodeHandle handle,
                                  Continuation c)
Description copied from class: PastryNodeFactory
Non-blocking version.

Specified by:
getLeafSet in class PastryNodeFactory
Returns:

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

getRouteRow

public CancellableTask getRouteRow(NodeHandle handle,
                                   int row,
                                   Continuation c)
Description copied from class: PastryNodeFactory
Non-blocking version.

Specified by:
getRouteRow in class PastryNodeFactory
Returns:

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

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 in millis 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)
Specified by:
generateNodeHandle in class DistPastryNodeFactory

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.
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
address - The address to claim that this node is at - used for proxies behind NATs
Returns:
A node with a random ID and next port number.

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)

ePOST API

Copyright © 2001-2005 - Rice Pastry.