Rice Pastry API

rice.pastry.leafset
Class SimilarSet

java.lang.Object
  extended by java.util.Observable
      extended by rice.pastry.leafset.SimilarSet
All Implemented Interfaces:
java.io.Serializable, NodeSetEventSource

public class SimilarSet
extends java.util.Observable
implements NodeSetEventSource, java.io.Serializable

A set of nodes, ordered by numerical distance of their Id from the local Id

Version:
$Id: SimilarSet.java 4654 2009-01-08 16:33:07Z jeffh $
Author:
Andrew Ladd, Peter Druschel
See Also:
Serialized Form

Constructor Summary
SimilarSet(LeafSet leafSet, NodeHandle localNode, int size, boolean cw)
          Constructor.
SimilarSet(LeafSet leafSet, NodeHandle localNode, int size, boolean cw, NodeHandle[] handles)
           
 
Method Summary
 void addNodeSetListener(NodeSetListener listener)
           
 void addObserver(java.util.Observer o)
          Deprecated. use addNodeSetListener
 void deleteObserver(java.util.Observer o)
          Deprecated. use removeNodeSetListener
 void destroy()
           
 NodeHandle get(Id nid)
          Finds the NodeHandle associated with the Id.
 NodeHandle get(int i)
          Gets the ith element in the set.
 NodeHandle get(NodeHandle nh)
           
 java.util.Collection<NodeHandle> getCollection()
          This is thread safe, in that it won't throw an error if not properly synchronized.
 NodeHandle getHandle(int i)
          Gets the ith element in the set.
 int getIndex(Id nid)
          Gets the index of the element with the given node id.
 int getIndex(NodeHandle nh)
           
 int getIndexHandle(Id id)
          Gets the index of the element with the given node id.
 boolean member(Id nid)
           
 boolean member(NodeHandle nid)
          Verifies if the set contains this particular id.
 boolean memberHandle(Id id)
          Verifies if the set contains this particular id.
 int mostSimilar(Id nid)
          Impl that doesn't produce garbage Numerically closest node to a given a node.
protected  void notifyListeners(NodeHandle handle, boolean added)
           
 boolean put(NodeHandle handle)
          Puts a NodeHandle into the set.
 boolean put(NodeHandle handle, boolean suppressNotify)
           
 boolean putHandle(NodeHandle handle)
          Puts a NodeHandle into the set.
 NodeHandle remove(Id nid)
          Removes a node id and its handle from the set.
protected  NodeHandle remove(int i)
          Removes a node id and its handle from the set.
 NodeHandle remove(NodeHandle nh)
           
 NodeHandle removeHandle(Id id)
          Removes a node id and its handle from the set.
 void removeNodeSetListener(NodeSetListener listener)
           
 int size()
          Gets the current size of this set.
protected  void swap(int i, int j)
          swap two elements
 boolean test(NodeHandle handle)
          Test if a NodeHandle belongs into the set.
 java.lang.String toString()
           
 
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
 

Constructor Detail

SimilarSet

public SimilarSet(LeafSet leafSet,
                  NodeHandle localNode,
                  int size,
                  boolean cw)
Constructor.

Parameters:
localNode - the local node
size - the size of the similar set.
cw - true if this is the clockwise leafset half

SimilarSet

public SimilarSet(LeafSet leafSet,
                  NodeHandle localNode,
                  int size,
                  boolean cw,
                  NodeHandle[] handles)
Method Detail

swap

protected void swap(int i,
                    int j)
swap two elements

Parameters:
i - the index of the first element
j - the indes of the second element

test

public boolean test(NodeHandle handle)
Test if a NodeHandle belongs into the set. Predicts if a put would succeed.

Parameters:
handle - the handle to test.
Returns:
true if a put would succeed, false otherwise.

put

public boolean put(NodeHandle handle)
Puts a NodeHandle into the set.

Parameters:
handle - the handle to put.
Returns:
true if the put succeeded, false otherwise.

put

public boolean put(NodeHandle handle,
                   boolean suppressNotify)

addObserver

public void addObserver(java.util.Observer o)
Deprecated. use addNodeSetListener

Generates too many objects to use this interface

Overrides:
addObserver in class java.util.Observable

deleteObserver

public void deleteObserver(java.util.Observer o)
Deprecated. use removeNodeSetListener

Generates too many objects to use this interface

Overrides:
deleteObserver in class java.util.Observable

addNodeSetListener

public void addNodeSetListener(NodeSetListener listener)
Specified by:
addNodeSetListener in interface NodeSetEventSource

removeNodeSetListener

public void removeNodeSetListener(NodeSetListener listener)
Specified by:
removeNodeSetListener in interface NodeSetEventSource

notifyListeners

protected void notifyListeners(NodeHandle handle,
                               boolean added)

get

public NodeHandle get(Id nid)
Finds the NodeHandle associated with the Id.

Parameters:
nid - a node id.
Returns:
the handle associated with that id or null if no such handle is found.

get

public NodeHandle get(NodeHandle nh)

get

public NodeHandle get(int i)
Gets the ith element in the set.

Parameters:
i - an index. i == -1 refers to the local node
Returns:
the handle associated with that id or null if no such handle is found.

member

public boolean member(NodeHandle nid)
Verifies if the set contains this particular id.

Parameters:
nid - a node id.
Returns:
true if that node id is in the set, false otherwise.

member

public boolean member(Id nid)

remove

public NodeHandle remove(Id nid)
Removes a node id and its handle from the set.

Parameters:
nid - the node to remove.
Returns:
the node handle removed or null if nothing.

remove

public NodeHandle remove(NodeHandle nh)

remove

protected NodeHandle remove(int i)
Removes a node id and its handle from the set.

Parameters:
i - the index of the node to remove.
Returns:
the node handle removed or null if nothing.

getIndex

public int getIndex(Id nid)
Gets the index of the element with the given node id.

Parameters:
nid - the node id.
Returns:
the index or -1 if the element does not exist.

getIndex

public int getIndex(NodeHandle nh)

size

public int size()
Gets the current size of this set.

Returns:
the size.

mostSimilar

public int mostSimilar(Id nid)
Impl that doesn't produce garbage Numerically closest node to a given a node. Returns -1 if the local Id is the most similar and returns an index otherwise.

Parameters:
nid - a node id.
Returns:
-1 if the local Id is most similar, else the index of the most similar node.

putHandle

public boolean putHandle(NodeHandle handle)
Puts a NodeHandle into the set.

Parameters:
handle - the handle to put.
Returns:
true if the put succeeded, false otherwise.

getHandle

public NodeHandle getHandle(int i)
Gets the ith element in the set.

Parameters:
i - an index.
Returns:
the handle associated with that id or null if no such handle is found.

memberHandle

public boolean memberHandle(Id id)
Verifies if the set contains this particular id.

Parameters:
id - a node id.
Returns:
true if that node id is in the set, false otherwise.

removeHandle

public NodeHandle removeHandle(Id id)
Removes a node id and its handle from the set.

Parameters:
nid - the node to remove.
Returns:
the node handle removed or null if nothing.

getIndexHandle

public int getIndexHandle(Id id)
                   throws java.util.NoSuchElementException
Gets the index of the element with the given node id.

Parameters:
id - the id.
Returns:
the index or throws a NoSuchElementException.
Throws:
java.util.NoSuchElementException

getCollection

public java.util.Collection<NodeHandle> getCollection()
This is thread safe, in that it won't throw an error if not properly synchronized.

Returns:

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

destroy

public void destroy()

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection