Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Rice Pastry API
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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)

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Rice Pastry API
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2005 - Rice Pastry.