ePOST API

rice.p2p.past.gc
Class GCPastImpl

java.lang.Object
  extended by rice.p2p.past.PastImpl
      extended by rice.p2p.past.gc.GCPastImpl
All Implemented Interfaces:
Application, GCPast, Past, ReplicationManagerClient
Direct Known Subclasses:
DeliveryPastImpl

public class GCPastImpl
extends PastImpl
implements GCPast

Version:
$Id: GCPastImpl.java 2867 2005-12-20 15:58:51Z jstewart $
Author:
Alan Mislove, Andreas Haeberlen

Nested Class Summary
protected  class GCPastImpl.ReplicaMap
           
 
Nested classes/interfaces inherited from class rice.p2p.past.PastImpl
PastImpl.MessageBuilder
 
Field Summary
 int collected
           
static long DEFAULT_EXPIRATION
          The default expiration, or when objects inserted with no timeout will expire
protected  IdFactory realFactory
          The real factory, which is not wrapped with a GCIdFactory
 int refreshed
           
 
Fields inherited from class rice.p2p.past.PastImpl
backup, endpoint, environment, factory, fetchHandles, inserts, instance, logger, lookups, MESSAGE_TIMEOUT, other, policy, replicaManager, replicationFactor, storage, SUCCESSFUL_INSERT_THRESHOLD, trash
 
Fields inherited from interface rice.p2p.past.gc.GCPast
INFINITY_EXPIRATION
 
Constructor Summary
GCPastImpl(Node node, StorageManager manager, Cache backup, int replicas, java.lang.String instance, PastPolicy policy, long collectionInterval, StorageManager trash)
          Constructor for GCPast
GCPastImpl(Node node, StorageManager manager, int replicas, java.lang.String instance, PastPolicy policy, long collectionInterval)
          Constructor for GCPast
 
Method Summary
protected  void collect(java.util.SortedMap map, Continuation command)
          Internal method which collects all of the objects in the given set
 void deliver(Id id, Message message)
          This method is called on the application at the destination node for the given id.
 boolean exists(Id id)
          This upcall should return whether or not the given id is currently stored by the client.
 void existsInOverlay(Id id, Continuation command)
          This upcall should return whether or not the given id is currently stored somewhere in the overlay by the client.
 void fetch(Id id, NodeHandle hint, Continuation command)
          This upcall is invoked to tell the client to fetch the given id, and to call the given command with the boolean result once the fetch is completed.
 boolean forward(RouteMessage message)
          This method is invoked on applications when the underlying node is about to forward the given message with the provided target to the specified next hop.
 void insert(PastContent obj, Continuation command)
          Inserts an object with the given ID into this instance of Past.
 void insert(PastContent obj, long expiration, Continuation command)
          Inserts an object with the given ID into this instance of Past.
protected  void refresh(GCIdSet ids, Continuation command)
          Internal method which actually does the refreshing.
 void refresh(Id[] array, long[] expirations, Continuation command)
          Updates the objects stored under the provided keys id to expire no earlier than the provided expiration time.
 void refresh(Id[] array, long expiration, Continuation command)
          Updates the objects stored under the provided keys id to expire no earlier than the provided expiration time.
 void reInsert(Id id, Continuation command)
          Asks a client to reinsert an object it already holds into the overlay
 void remove(Id id, Continuation command)
          This upcall is to notify the client that the given id can be safely removed from the storage.
 IdSet scan()
          This upcall should return the set of keys that the application currently stores.
 IdSet scan(IdRange range)
          This upcall should return the set of keys that the application currently stores in this range.
 
Methods inherited from class rice.p2p.past.PastImpl
buildReplicationManager, cache, doInsert, fetch, getEndpoint, getEnvironment, getHandles, getInstance, getLocalNodeHandle, getOutstandingMessages, getReplication, getReplicationFactor, getResponseContinuation, getStorageManager, getUID, lookup, lookup, lookupHandle, lookupHandles, sendRequest, sendRequest, sendRequest, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface rice.p2p.past.Past
fetch, getEnvironment, getInstance, getLocalNodeHandle, getReplicationFactor, lookup, lookup, lookupHandle, lookupHandles
 

Field Detail

DEFAULT_EXPIRATION

public static final long DEFAULT_EXPIRATION
The default expiration, or when objects inserted with no timeout will expire

See Also:
Constant Field Values

realFactory

protected IdFactory realFactory
The real factory, which is not wrapped with a GCIdFactory


collected

public int collected

refreshed

public int refreshed
Constructor Detail

GCPastImpl

public GCPastImpl(Node node,
                  StorageManager manager,
                  int replicas,
                  java.lang.String instance,
                  PastPolicy policy,
                  long collectionInterval)
Constructor for GCPast

Parameters:
node - The node below this Past implementation
manager - The storage manager to be used by Past
replicas - The number of object replicas
instance - The unique instance name of this Past
policy - The policy this past instance should use
collectionInterval - The frequency with which GCPast should collection local expired objects

GCPastImpl

public GCPastImpl(Node node,
                  StorageManager manager,
                  Cache backup,
                  int replicas,
                  java.lang.String instance,
                  PastPolicy policy,
                  long collectionInterval,
                  StorageManager trash)
Constructor for GCPast

Parameters:
node - The node below this Past implementation
manager - The storage manager to be used by Past
backup - The cache used for previously-responsible objects (can be null)
replicas - The number of object replicas
instance - The unique instance name of this Past
trash - The storage manager to place the deleted objects into (if null, they are removed)
policy - The policy this past instance should use
collectionInterval - The frequency with which GCPast should collection local expired objects
Method Detail

insert

public void insert(PastContent obj,
                   Continuation command)
Inserts an object with the given ID into this instance of Past. Asynchronously returns a PastException to command, if the operation was unsuccessful. If the operation was successful, a Boolean[] is returned representing the responses from each of the replicas which inserted the object. This method is equivalent to insert(obj, INFINITY_EXPIRATION, command) as it inserts the object with a timeout value of infinity. This is done for simplicity, as well as backwards-compatibility for applications.

Specified by:
insert in interface GCPast
Specified by:
insert in interface Past
Overrides:
insert in class PastImpl
Parameters:
obj - the object to be inserted
command - Command to be performed when the result is received

insert

public void insert(PastContent obj,
                   long expiration,
                   Continuation command)
Inserts an object with the given ID into this instance of Past. Asynchronously returns a PastException to command, if the operation was unsuccessful. If the operation was successful, a Boolean[] is returned representing the responses from each of the replicas which inserted the object. The contract for this method is that the provided object will be stored until the provided expiration time. Thus, if the application determines that it is still interested in this object, it must refresh the object via the refresh() method.

Specified by:
insert in interface GCPast
Parameters:
obj - the object to be inserted
expiration - the time until which the object must be stored
command - Command to be performed when the result is received

refresh

public void refresh(Id[] array,
                    long expiration,
                    Continuation command)
Updates the objects stored under the provided keys id to expire no earlier than the provided expiration time. Asyncroniously returns the result to the caller via the provided continuation. The result of this operation is an Object[], which is the same length as the input array of Ids. Each element in the array is either Boolean(true), representing that the refresh succeeded for the cooresponding Id, or an Exception describing why the refresh failed. Specifically, the possible exceptions which can be returned are: ObjectNotFoundException - if no object was found under the given key RefreshFailedException - if the refresh operation failed for any other reason (the getMessage() will describe the failure)

Specified by:
refresh in interface GCPast
Parameters:
id - The keys which to refresh
expiration - The time to extend the lifetime to
command - Command to be performed when the result is received

refresh

public void refresh(Id[] array,
                    long[] expirations,
                    Continuation command)
Updates the objects stored under the provided keys id to expire no earlier than the provided expiration time. Asyncroniously returns the result to the caller via the provided continuation. The result of this operation is an Object[], which is the same length as the input array of Ids. Each element in the array is either Boolean(true), representing that the refresh succeeded for the cooresponding Id, or an Exception describing why the refresh failed. Specifically, the possible exceptions which can be returned are: ObjectNotFoundException - if no object was found under the given key RefreshFailedException - if the refresh operation failed for any other reason (the getMessage() will describe the failure)

Specified by:
refresh in interface GCPast
Parameters:
id - The keys which to refresh
expiration - The time to extend the lifetime to
command - Command to be performed when the result is received

refresh

protected void refresh(GCIdSet ids,
                       Continuation command)
Internal method which actually does the refreshing. Should not be called by external applications.

Parameters:
ids - The ids to refresh
expiration - The time to extend the lifetime until
command - The command to return the result to

forward

public boolean forward(RouteMessage message)
This method is invoked on applications when the underlying node is about to forward the given message with the provided target to the specified next hop. Applications can change the contents of the message, specify a different nextHop (through re-routing), or completely terminate the message.

Specified by:
forward in interface Application
Overrides:
forward in class PastImpl
Parameters:
message - The message being sent, containing an internal message along with a destination key and nodeHandle next hop.
Returns:
Whether or not to forward the message further

deliver

public void deliver(Id id,
                    Message message)
This method is called on the application at the destination node for the given id.

Specified by:
deliver in interface Application
Overrides:
deliver in class PastImpl
Parameters:
id - The destination id of the message
message - The message being sent

collect

protected void collect(java.util.SortedMap map,
                       Continuation command)
Internal method which collects all of the objects in the given set

Parameters:
set - THe set to collect
command - The command to call once done

fetch

public void fetch(Id id,
                  NodeHandle hint,
                  Continuation command)
This upcall is invoked to tell the client to fetch the given id, and to call the given command with the boolean result once the fetch is completed. The client *MUST* call the command at some point in the future, as the manager waits for the command to return before continuing.

Specified by:
fetch in interface ReplicationManagerClient
Overrides:
fetch in class PastImpl
Parameters:
id - The id to fetch
hint - A hint where to find the key from. This is where the local node heard about the key.
command - The command to return the result to

remove

public void remove(Id id,
                   Continuation command)
This upcall is to notify the client that the given id can be safely removed from the storage. The client may choose to perform advanced behavior, such as caching the object, or may simply delete it.

Specified by:
remove in interface ReplicationManagerClient
Overrides:
remove in class PastImpl
Parameters:
id - The id to remove

scan

public IdSet scan(IdRange range)
This upcall should return the set of keys that the application currently stores in this range. Should return a empty IdSet (not null), in the case that no keys belong to this range.

Specified by:
scan in interface ReplicationManagerClient
Overrides:
scan in class PastImpl
Parameters:
range - the requested range

scan

public IdSet scan()
This upcall should return the set of keys that the application currently stores. Should return a empty IdSet (not null), in the case that no keys belong to this range.

Overrides:
scan in class PastImpl
Parameters:
range - the requested range

exists

public boolean exists(Id id)
This upcall should return whether or not the given id is currently stored by the client.

Specified by:
exists in interface ReplicationManagerClient
Overrides:
exists in class PastImpl
Parameters:
id - The id in question
Returns:
Whether or not the id exists

existsInOverlay

public void existsInOverlay(Id id,
                            Continuation command)
Description copied from interface: ReplicationManagerClient
This upcall should return whether or not the given id is currently stored somewhere in the overlay by the client.

Specified by:
existsInOverlay in interface ReplicationManagerClient
Overrides:
existsInOverlay in class PastImpl
Parameters:
id - The id in question

reInsert

public void reInsert(Id id,
                     Continuation command)
Description copied from interface: ReplicationManagerClient
Asks a client to reinsert an object it already holds into the overlay

Specified by:
reInsert in interface ReplicationManagerClient
Overrides:
reInsert in class PastImpl
Parameters:
id - The id in question

ePOST API

Copyright © 2001-2005 - Rice Pastry.