|
Rice Pastry API | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.util.Observable rice.pastry.routing.RoutingTable
public class RoutingTable
The Pastry routing table.
The size of this table is determined by two constants:
nodeIdBitLength
which
determines the number of bits in a node id (which we call n).
idBaseBitLength
which is the base
that table is stored in (which we call b).
We write out node ids as numbers in base 2 b . They will have length D = ceiling(log 2 b 2 n ). The table is stored from 0...(D-1) by 0...(2 b - 1). The table stores a set of node handles at each entry. At address [index][digit], we store the set of handles were the most significant (numerically) difference from the node id that the table routes for at the index th digit and the differing digit is digit. An index of 0 is the least significant digit.
Field Summary | |
---|---|
byte |
idBaseBitLength
The routing calculations will occur in base 2 idBaseBitLength |
NodeHandle |
myNodeHandle
|
protected PastryNode |
pn
|
static int |
TEST_FAIL_EXISTING_ARE_BETTER
|
static int |
TEST_FAIL_NO_PREFIX_MATCH
|
static int |
TEST_SUCCESS_AVAILABLE_SPACE
|
static int |
TEST_SUCCESS_BETTER_PROXIMITY
|
static int |
TEST_SUCCESS_ENTRY_WAS_DEAD
|
static int |
TEST_SUCCESS_NO_ENTRIES
|
Constructor Summary | |
---|---|
RoutingTable(NodeHandle me,
int max,
byte base,
PastryNode pn)
Constructor. |
Method Summary | |
---|---|
void |
addNodeSetListener(NodeSetListener listener)
|
void |
addObserver(java.util.Observer o)
Deprecated. use addNodeSetListener |
NodeSet |
alternateRoutes(Id key,
int max)
Determines a set of alternate hops towards a given key. |
java.util.List |
asList()
Does not return self |
byte |
baseBitLength()
return the bit length of the base |
NodeHandle |
bestAlternateRoute(Id key)
Determines an alternate hop numerically closer to the key than the one we are at. |
NodeHandle |
bestAlternateRoute(int minLiveness,
Id key)
Determines an alternate hop numerically closer to the key than the one we are at. |
void |
deleteObserver(java.util.Observer o)
Deprecated. use deleteNodeSetListener |
void |
destroy()
Unregisters as an observer on all nodehandles. |
NodeHandle |
get(Id nid)
Gets the node handle associated with a given id. |
RouteSet |
getBestEntry(Id key)
Gets the set of handles that match at least one more digit of the key than the local Id. |
RouteSet |
getRouteSet(int index,
int digit)
Gets the set of handles at a particular entry in the table. |
RouteSet[] |
getRow(int i)
Get a row from the routing table. |
void |
nodeSetUpdate(java.lang.Object o,
NodeHandle handle,
boolean added)
Is called by the Observer pattern whenever a RouteSet in this table has changed. |
int |
numColumns()
return ths number of columns in the routing table |
int |
numEntries()
|
short |
numRows()
return the number of rows in the routing table |
int |
numUniqueEntries()
|
boolean |
put(NodeHandle handle)
Puts a handle into the routing table. |
NodeHandle |
remove(NodeHandle nh)
Removes a node id from the table. |
void |
removeNodeSetListener(NodeSetListener listener)
|
int |
test(NodeHandle handle)
|
java.lang.String |
toString()
produces a String representation of the routing table, showing the number of node handles in each entry |
Methods inherited from class java.util.Observable |
---|
clearChanged, countObservers, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public byte idBaseBitLength
public NodeHandle myNodeHandle
protected PastryNode pn
public static final int TEST_FAIL_NO_PREFIX_MATCH
public static final int TEST_FAIL_EXISTING_ARE_BETTER
public static final int TEST_SUCCESS_BETTER_PROXIMITY
public static final int TEST_SUCCESS_ENTRY_WAS_DEAD
public static final int TEST_SUCCESS_AVAILABLE_SPACE
public static final int TEST_SUCCESS_NO_ENTRIES
Constructor Detail |
---|
public RoutingTable(NodeHandle me, int max, byte base, PastryNode pn)
me
- the node id for this routing table.max
- the maximum number of entries at each table slot.Method Detail |
---|
public int numColumns()
public short numRows()
public byte baseBitLength()
public NodeHandle bestAlternateRoute(Id key)
key
- the key
public NodeHandle bestAlternateRoute(int minLiveness, Id key)
key
- the key
public NodeSet alternateRoutes(Id key, int max)
key
- the keymax
- the maximal number of alternate hops requested
public RouteSet getRouteSet(int index, int digit)
index
- the index of the digit in base 2 idBaseBitLength
.0 is the least significant.digit
- ranges from 0... 2 idBaseBitLength - 1 .
Selects which digit to use.
public RouteSet getBestEntry(Id key)
key
- the key
public boolean put(NodeHandle handle)
handle
- the handle to put.public int test(NodeHandle handle)
public NodeHandle get(Id nid)
nid
- a node id
public RouteSet[] getRow(int i)
i
- which row
public NodeHandle remove(NodeHandle nh)
nid
- the node id to remove.
public void nodeSetUpdate(java.lang.Object o, NodeHandle handle, boolean added)
o
- the RouteSetarg
- the eventpublic java.lang.String toString()
toString
in class java.lang.Object
public int numEntries()
public int numUniqueEntries()
public void addObserver(java.util.Observer o)
addObserver
in class java.util.Observable
public void deleteObserver(java.util.Observer o)
deleteObserver
in class java.util.Observable
public void addNodeSetListener(NodeSetListener listener)
addNodeSetListener
in interface NodeSetEventSource
public void removeNodeSetListener(NodeSetListener listener)
removeNodeSetListener
in interface NodeSetEventSource
public java.util.List asList()
public void destroy()
|
Rice Pastry API | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |