Rice Pastry API

rice.pastry.direct
Interface NetworkSimulator<Identifier,MessageType>

All Known Implementing Classes:
EuclideanNetwork, GenericNetwork, NetworkSimulatorImpl, SphereNetwork

public interface NetworkSimulator<Identifier,MessageType>

Interface to an object which is simulating the network.

Version:
$Id: NetworkSimulator.java 4221 2008-05-19 16:41:19Z jeffh $
Author:
Andrew Ladd

Method Summary
 boolean addSimulatorListener(GenericSimulatorListener<Identifier,MessageType> sl)
           
 void destroy(DirectPastryNode dpn)
           
 CancellableTask enqueueDelivery(Delivery del, int delay)
          Deliver message.
 NodeRecord generateNodeRecord()
          Generates a random node record
 DirectNodeHandle getClosest(DirectNodeHandle nh)
          Returns the closest Node in proximity.
 Environment getEnvironment()
           
 GenericNetworkSimulator<Identifier,MessageType> getGenericSimulator()
           
 LivenessProvider<Identifier> getLivenessProvider()
           
 NodeRecord getNodeRecord(DirectNodeHandle handle)
           
 TestRecord getTestRecord()
           
 boolean isAlive(Identifier nh)
          Checks to see if a node id is alive.
 float networkDelay(Identifier a, Identifier b)
          Determines delivery time from a to b.
 void notifySimulatorListenersReceived(MessageType m, Identifier from, Identifier to)
          Call this when a message is received.
 void notifySimulatorListenersSent(MessageType m, Identifier from, Identifier to, int delay)
          Call this when a message is sent.
 float proximity(Identifier a, Identifier b)
          Determines rtt between two nodes.
 void registerNode(Identifier i, DirectTransportLayer<Identifier,MessageType> dtl, NodeRecord nr)
           
 void removeNode(PastryNode node)
          Registers a node handle with the simulator.
 boolean removeSimulatorListener(GenericSimulatorListener<Identifier,MessageType> sl)
           
 void setFullSpeed()
          unlimited maxSpeed
 void setMaxSpeed(float rate)
          The max rate of the simulator compared to realtime.
 void setTestRecord(TestRecord tr)
           
 void start()
           
 void stop()
           
 

Method Detail

getEnvironment

Environment getEnvironment()

isAlive

boolean isAlive(Identifier nh)
Checks to see if a node id is alive.

Parameters:
nid - a node id.
Returns:
true if alive, false otherwise.

proximity

float proximity(Identifier a,
                Identifier b)
Determines rtt between two nodes.

Parameters:
a - a node id.
b - another node id.
Returns:
proximity of b to a.

networkDelay

float networkDelay(Identifier a,
                   Identifier b)
Determines delivery time from a to b.

Parameters:
a - a node id.
b - another node id.
Returns:
proximity of b to a.

setTestRecord

void setTestRecord(TestRecord tr)

getTestRecord

TestRecord getTestRecord()

getClosest

DirectNodeHandle getClosest(DirectNodeHandle nh)
Returns the closest Node in proximity.

Parameters:
nid -
Returns:

destroy

void destroy(DirectPastryNode dpn)

generateNodeRecord

NodeRecord generateNodeRecord()
Generates a random node record

Returns:

removeNode

void removeNode(PastryNode node)
Registers a node handle with the simulator.

Parameters:
nh - the node handle to register.

start

void start()

stop

void stop()

enqueueDelivery

CancellableTask enqueueDelivery(Delivery del,
                                int delay)
Deliver message.

Parameters:
msg - message to deliver.
node - the Pastry node to deliver it to.
how - long to delay to deliver the message
period - to deliver the message after the delay

setMaxSpeed

void setMaxSpeed(float rate)
The max rate of the simulator compared to realtime. The rule is that the simulated clock will not be set to a value greater than the factor from system-time that the call was made. Thus if 1 hour ago, you said the simulator should run at 10x realtime the simulated clock will only have advanced 10 hours. Note that if the simulator cannot keep up with the system clock in the early part, it may move faster than the value you set to "catch up" To prevent this speed-up from becoming unbounded, you may wish to call setMaxSpeed() periodically or immediately after periods of expensive calculations. Setting the simulation speed to zero will not pause the simulation, you must call stop() to do that.

Parameters:
the - multiple on realtime that the simulator is allowed to run at, zero or less will cause no bound on the simulation speed

setFullSpeed

void setFullSpeed()
unlimited maxSpeed


notifySimulatorListenersSent

void notifySimulatorListenersSent(MessageType m,
                                  Identifier from,
                                  Identifier to,
                                  int delay)
Call this when a message is sent.

Parameters:
m - the message
from - the source
to - the destination
delay - the network proximity (when the message will be received)

notifySimulatorListenersReceived

void notifySimulatorListenersReceived(MessageType m,
                                      Identifier from,
                                      Identifier to)
Call this when a message is received.

Parameters:
m - the message
from - the source
to - the destination

addSimulatorListener

boolean addSimulatorListener(GenericSimulatorListener<Identifier,MessageType> sl)
Parameters:
sl -
Returns:
true if added, false if already a listener

removeSimulatorListener

boolean removeSimulatorListener(GenericSimulatorListener<Identifier,MessageType> sl)
Parameters:
sl -
Returns:
true if removed, false if not already a listener

getNodeRecord

NodeRecord getNodeRecord(DirectNodeHandle handle)

getLivenessProvider

LivenessProvider<Identifier> getLivenessProvider()

getGenericSimulator

GenericNetworkSimulator<Identifier,MessageType> getGenericSimulator()

registerNode

void registerNode(Identifier i,
                  DirectTransportLayer<Identifier,MessageType> dtl,
                  NodeRecord nr)

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection