1830 lines
87 KiB
HTML
Raw Permalink Normal View History

2019-05-13 16:45:05 +04:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_07) on Fri Mar 13 20:00:59 CET 2009 -->
<TITLE>
PastImpl (Rice Pastry - API Specifications)
</TITLE>
<META NAME="date" CONTENT="2009-03-13">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="PastImpl (Rice Pastry - API Specifications)";
}
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<HR>
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/PastImpl.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
Rice Pastry API</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../rice/p2p/past/PastException.html" title="class in rice.p2p.past"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/past/PastImpl.MessageBuilder.html" title="interface in rice.p2p.past"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/p2p/past/PastImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="PastImpl.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
rice.p2p.past</FONT>
<BR>
Class PastImpl</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>rice.p2p.past.PastImpl</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>, <A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A>, <A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html" title="interface in rice.p2p.replication.manager">ReplicationManagerClient</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../rice/p2p/past/gc/GCPastImpl.html" title="class in rice.p2p.past.gc">GCPastImpl</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>PastImpl</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A>, <A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>, <A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html" title="interface in rice.p2p.replication.manager">ReplicationManagerClient</A></DL>
</PRE>
<P>
<DL>
<DT><B>Version:</B></DT>
<DD>$Id: PastImpl.java 4654 2009-01-08 16:33:07Z jeffh $</DD>
<DT><B>Author:</B></DT>
<DD>Alan Mislove, Ansley Post, Peter Druschel</DD>
</DL>
<HR>
<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->
<A NAME="nested_class_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Nested Class Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;interface</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.MessageBuilder.html" title="interface in rice.p2p.past">PastImpl.MessageBuilder</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class which builds a message</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.PastDeserializer.html" title="class in rice.p2p.past">PastImpl.PastDeserializer</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/persistence/Cache.html" title="interface in rice.persistence">Cache</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#backup">backup</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/past/rawserialization/PastContentDeserializer.html" title="interface in rice.p2p.past.rawserialization">PastContentDeserializer</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#contentDeserializer">contentDeserializer</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/past/rawserialization/PastContentHandleDeserializer.html" title="interface in rice.p2p.past.rawserialization">PastContentHandleDeserializer</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#contentHandleDeserializer">contentHandleDeserializer</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#endpoint">endpoint</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#environment">environment</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/commonapi/IdFactory.html" title="interface in rice.p2p.commonapi">IdFactory</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#factory">factory</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#fetchHandles">fetchHandles</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#inserts">inserts</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#instance">instance</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/persistence/LockManager.html" title="interface in rice.persistence">LockManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#lockManager">lockManager</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/environment/logging/Logger.html" title="class in rice.environment.logging">Logger</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#logger">logger</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#lookups">lookups</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#MESSAGE_TIMEOUT">MESSAGE_TIMEOUT</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#other">other</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#policy">policy</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/replication/manager/ReplicationManager.html" title="interface in rice.p2p.replication.manager">ReplicationManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#replicaManager">replicaManager</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#replicationFactor">replicationFactor</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/past/rawserialization/SocketStrategy.html" title="interface in rice.p2p.past.rawserialization">SocketStrategy</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#socketStrategy">socketStrategy</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#storage">storage</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;double</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#SUCCESSFUL_INSERT_THRESHOLD">SUCCESSFUL_INSERT_THRESHOLD</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#trash">trash</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, rice.persistence.Cache, int, java.lang.String, rice.p2p.past.PastPolicy, rice.persistence.StorageManager)">PastImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
<A HREF="../../../rice/persistence/Cache.html" title="interface in rice.persistence">Cache</A>&nbsp;backup,
int&nbsp;replicas,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A>&nbsp;policy,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;trash)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, rice.persistence.Cache, int, java.lang.String, rice.p2p.past.PastPolicy, rice.persistence.StorageManager, boolean)">PastImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
<A HREF="../../../rice/persistence/Cache.html" title="interface in rice.persistence">Cache</A>&nbsp;backup,
int&nbsp;replicas,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A>&nbsp;policy,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;trash,
boolean&nbsp;useOwnSocket)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, rice.persistence.Cache, int, java.lang.String, rice.p2p.past.PastPolicy, rice.persistence.StorageManager, rice.p2p.past.rawserialization.SocketStrategy)">PastImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
<A HREF="../../../rice/persistence/Cache.html" title="interface in rice.persistence">Cache</A>&nbsp;backup,
int&nbsp;replicas,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A>&nbsp;policy,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;trash,
<A HREF="../../../rice/p2p/past/rawserialization/SocketStrategy.html" title="interface in rice.p2p.past.rawserialization">SocketStrategy</A>&nbsp;strategy)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for Past</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, int, java.lang.String)">PastImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
int&nbsp;replicas,
java.lang.String&nbsp;instance)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for Past, using the default policy</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, int, java.lang.String, rice.p2p.past.PastPolicy)">PastImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
int&nbsp;replicas,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A>&nbsp;policy)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for Past</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/replication/manager/ReplicationManager.html" title="interface in rice.p2p.replication.manager">ReplicationManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#buildReplicationManager(rice.p2p.commonapi.Node, java.lang.String)">buildReplicationManager</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
java.lang.String&nbsp;instance)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Internal method which builds the replication manager.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#cache(rice.p2p.past.PastContent, rice.Continuation)">cache</A></B>(<A HREF="../../../rice/p2p/past/PastContent.html" title="interface in rice.p2p.past">PastContent</A>&nbsp;content,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method which inserts the given object into the cache</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#deliver(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message)">deliver</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called on the application at the destination node
for the given id.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#doInsert(rice.p2p.commonapi.Id, rice.p2p.past.PastImpl.MessageBuilder, rice.Continuation, boolean)">doInsert</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/past/PastImpl.MessageBuilder.html" title="interface in rice.p2p.past">PastImpl.MessageBuilder</A>&nbsp;builder,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command,
boolean&nbsp;useSocket)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Internal method which actually performs an insert for a given object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#exists(rice.p2p.commonapi.Id)">exists</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This upcall should return whether or not the given id is currently stored
by the client.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#existsInOverlay(rice.p2p.commonapi.Id, rice.Continuation)">existsInOverlay</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This upcall should return whether or not the given id is currently stored
somewhere in the overlay by the client.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#fetch(rice.p2p.commonapi.Id, rice.p2p.commonapi.NodeHandle, rice.Continuation)">fetch</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#fetch(rice.p2p.past.PastContentHandle, rice.Continuation)">fetch</A></B>(<A HREF="../../../rice/p2p/past/PastContentHandle.html" title="interface in rice.p2p.past">PastContentHandle</A>&nbsp;handle,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the object associated with a given content handle.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#forward(rice.p2p.commonapi.RouteMessage)">forward</A></B>(<A HREF="../../../rice/p2p/commonapi/RouteMessage.html" title="interface in rice.p2p.commonapi">RouteMessage</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getEndpoint()">getEndpoint</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the endpoint associated with the Past - ONLY FOR TESTING - DO NOT USE</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getEnvironment()">getEnvironment</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getFetchResponseContinuation(rice.p2p.past.messaging.PastMessage)">getFetchResponseContinuation</A></B>(<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do like above, but use a socket</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getHandles(rice.p2p.commonapi.Id, int, rice.Continuation)">getHandles</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
int&nbsp;max,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Internal method which returns the handles to an object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getInstance()">getInstance</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getLocalNodeHandle()">getLocalNodeHandle</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the nodeHandle of the local Past node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getOutstandingMessages()">getOutstandingMessages</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns of the outstanding messages.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/replication/Replication.html" title="interface in rice.p2p.replication">Replication</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getReplication()">getReplication</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the replica manager for this Past instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getReplicationFactor()">getReplicationFactor</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of replicas used in this Past</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getResponseContinuation(rice.p2p.past.messaging.PastMessage)">getResponseContinuation</A></B>(<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a continuation which will respond to the given message.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getStorageManager()">getStorageManager</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this Past's storage manager.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#getUID()">getUID</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a new uid for a message</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#insert(rice.p2p.past.PastContent, rice.Continuation)">insert</A></B>(<A HREF="../../../rice/p2p/past/PastContent.html" title="interface in rice.p2p.past">PastContent</A>&nbsp;obj,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserts an object with the given ID into this instance of Past.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#lookup(rice.p2p.commonapi.Id, boolean, rice.Continuation)">lookup</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
boolean&nbsp;cache,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method which performs the same as lookup(), but allows the
callee to specify if the data should be cached.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#lookup(rice.p2p.commonapi.Id, rice.Continuation)">lookup</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&lt;<A HREF="../../../rice/p2p/past/PastContent.html" title="interface in rice.p2p.past">PastContent</A>,java.lang.Exception&gt;&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the object stored in this instance of Past with the
given ID.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#lookupHandle(rice.p2p.commonapi.Id, rice.p2p.commonapi.NodeHandle, rice.Continuation)">lookupHandle</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;handle,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the handle for the given object stored on the requested
node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#lookupHandles(rice.p2p.commonapi.Id, int, rice.Continuation)">lookupHandles</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
int&nbsp;max,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the handles of up to max replicas of the object stored
in this instance of Past with the given ID.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#reInsert(rice.p2p.commonapi.Id, rice.Continuation)">reInsert</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Asks a client to reinsert an object it already holds into the overlay</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#remove(rice.p2p.commonapi.Id, rice.Continuation)">remove</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This upcall is to notify the client that the given id can be safely removed
from the storage.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/IdSet.html" title="interface in rice.p2p.commonapi">IdSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#scan()">scan</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This upcall should return the set of keys that the application
currently stores.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/IdSet.html" title="interface in rice.p2p.commonapi">IdSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#scan(rice.p2p.commonapi.IdRange)">scan</A></B>(<A HREF="../../../rice/p2p/commonapi/IdRange.html" title="interface in rice.p2p.commonapi">IdRange</A>&nbsp;range)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This upcall should return the set of keys that the application
currently stores in this range.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#sendRequest(rice.p2p.commonapi.Id, rice.p2p.past.messaging.PastMessage, rice.Continuation)">sendRequest</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;message,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a request message across the wire, and stores the appropriate
continuation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#sendRequest(rice.p2p.commonapi.Id, rice.p2p.past.messaging.PastMessage, rice.p2p.commonapi.NodeHandle, rice.Continuation)">sendRequest</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;message,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a request message across the wire, and stores the appropriate
continuation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#sendRequest(rice.p2p.commonapi.NodeHandle, rice.p2p.past.messaging.PastMessage, rice.Continuation)">sendRequest</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;handle,
<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;message,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a request message across the wire, and stores the appropriate
continuation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#setContentDeserializer(rice.p2p.past.rawserialization.PastContentDeserializer)">setContentDeserializer</A></B>(<A HREF="../../../rice/p2p/past/rawserialization/PastContentDeserializer.html" title="interface in rice.p2p.past.rawserialization">PastContentDeserializer</A>&nbsp;deserializer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#setContentHandleDeserializer(rice.p2p.past.rawserialization.PastContentHandleDeserializer)">setContentHandleDeserializer</A></B>(<A HREF="../../../rice/p2p/past/rawserialization/PastContentHandleDeserializer.html" title="interface in rice.p2p.past.rawserialization">PastContentHandleDeserializer</A>&nbsp;deserializer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#toString()">toString</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/past/PastImpl.html#update(rice.p2p.commonapi.NodeHandle, boolean)">update</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;handle,
boolean&nbsp;joined)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked to inform the application that the given node
has either joined or left the neighbor set of the local node, as the set
would be returned by the neighborSet call.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ FIELD DETAIL =========== -->
<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="MESSAGE_TIMEOUT"><!-- --></A><H3>
MESSAGE_TIMEOUT</H3>
<PRE>
public final int <B>MESSAGE_TIMEOUT</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="SUCCESSFUL_INSERT_THRESHOLD"><!-- --></A><H3>
SUCCESSFUL_INSERT_THRESHOLD</H3>
<PRE>
public final double <B>SUCCESSFUL_INSERT_THRESHOLD</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="endpoint"><!-- --></A><H3>
endpoint</H3>
<PRE>
protected <A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A> <B>endpoint</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="storage"><!-- --></A><H3>
storage</H3>
<PRE>
protected <A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A> <B>storage</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="trash"><!-- --></A><H3>
trash</H3>
<PRE>
protected <A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A> <B>trash</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="backup"><!-- --></A><H3>
backup</H3>
<PRE>
protected <A HREF="../../../rice/persistence/Cache.html" title="interface in rice.persistence">Cache</A> <B>backup</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="replicationFactor"><!-- --></A><H3>
replicationFactor</H3>
<PRE>
protected int <B>replicationFactor</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="replicaManager"><!-- --></A><H3>
replicaManager</H3>
<PRE>
protected <A HREF="../../../rice/p2p/replication/manager/ReplicationManager.html" title="interface in rice.p2p.replication.manager">ReplicationManager</A> <B>replicaManager</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="lockManager"><!-- --></A><H3>
lockManager</H3>
<PRE>
protected <A HREF="../../../rice/persistence/LockManager.html" title="interface in rice.persistence">LockManager</A> <B>lockManager</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="policy"><!-- --></A><H3>
policy</H3>
<PRE>
protected <A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A> <B>policy</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="factory"><!-- --></A><H3>
factory</H3>
<PRE>
protected <A HREF="../../../rice/p2p/commonapi/IdFactory.html" title="interface in rice.p2p.commonapi">IdFactory</A> <B>factory</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="instance"><!-- --></A><H3>
instance</H3>
<PRE>
protected java.lang.String <B>instance</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="inserts"><!-- --></A><H3>
inserts</H3>
<PRE>
public int <B>inserts</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="lookups"><!-- --></A><H3>
lookups</H3>
<PRE>
public int <B>lookups</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="fetchHandles"><!-- --></A><H3>
fetchHandles</H3>
<PRE>
public int <B>fetchHandles</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="other"><!-- --></A><H3>
other</H3>
<PRE>
public int <B>other</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="environment"><!-- --></A><H3>
environment</H3>
<PRE>
protected <A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A> <B>environment</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="logger"><!-- --></A><H3>
logger</H3>
<PRE>
protected <A HREF="../../../rice/environment/logging/Logger.html" title="class in rice.environment.logging">Logger</A> <B>logger</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="contentDeserializer"><!-- --></A><H3>
contentDeserializer</H3>
<PRE>
protected <A HREF="../../../rice/p2p/past/rawserialization/PastContentDeserializer.html" title="interface in rice.p2p.past.rawserialization">PastContentDeserializer</A> <B>contentDeserializer</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="contentHandleDeserializer"><!-- --></A><H3>
contentHandleDeserializer</H3>
<PRE>
protected <A HREF="../../../rice/p2p/past/rawserialization/PastContentHandleDeserializer.html" title="interface in rice.p2p.past.rawserialization">PastContentHandleDeserializer</A> <B>contentHandleDeserializer</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="socketStrategy"><!-- --></A><H3>
socketStrategy</H3>
<PRE>
public <A HREF="../../../rice/p2p/past/rawserialization/SocketStrategy.html" title="interface in rice.p2p.past.rawserialization">SocketStrategy</A> <B>socketStrategy</B></PRE>
<DL>
<DL>
</DL>
</DL>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, int, java.lang.String)"><!-- --></A><H3>
PastImpl</H3>
<PRE>
public <B>PastImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
int&nbsp;replicas,
java.lang.String&nbsp;instance)</PRE>
<DL>
<DD>Constructor for Past, using the default policy
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node below this Past implementation<DD><CODE>manager</CODE> - The storage manager to be used by Past<DD><CODE>replicas</CODE> - The number of object replicas<DD><CODE>instance</CODE> - The unique instance name of this Past</DL>
</DL>
<HR>
<A NAME="PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, int, java.lang.String, rice.p2p.past.PastPolicy)"><!-- --></A><H3>
PastImpl</H3>
<PRE>
public <B>PastImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
int&nbsp;replicas,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A>&nbsp;policy)</PRE>
<DL>
<DD>Constructor for Past
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node below this Past implementation<DD><CODE>manager</CODE> - The storage manager to be used by Past<DD><CODE>replicas</CODE> - The number of object replicas<DD><CODE>instance</CODE> - The unique instance name of this Past</DL>
</DL>
<HR>
<A NAME="PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, rice.persistence.Cache, int, java.lang.String, rice.p2p.past.PastPolicy, rice.persistence.StorageManager)"><!-- --></A><H3>
PastImpl</H3>
<PRE>
public <B>PastImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
<A HREF="../../../rice/persistence/Cache.html" title="interface in rice.persistence">Cache</A>&nbsp;backup,
int&nbsp;replicas,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A>&nbsp;policy,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;trash)</PRE>
<DL>
</DL>
<HR>
<A NAME="PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, rice.persistence.Cache, int, java.lang.String, rice.p2p.past.PastPolicy, rice.persistence.StorageManager, boolean)"><!-- --></A><H3>
PastImpl</H3>
<PRE>
public <B>PastImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
<A HREF="../../../rice/persistence/Cache.html" title="interface in rice.persistence">Cache</A>&nbsp;backup,
int&nbsp;replicas,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A>&nbsp;policy,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;trash,
boolean&nbsp;useOwnSocket)</PRE>
<DL>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - <DD><CODE>manager</CODE> - <DD><CODE>backup</CODE> - <DD><CODE>replicas</CODE> - <DD><CODE>instance</CODE> - <DD><CODE>policy</CODE> - <DD><CODE>trash</CODE> - <DD><CODE>useOwnSocket</CODE> - send all inserts/fetches over a socket (default is false)</DL>
</DL>
<HR>
<A NAME="PastImpl(rice.p2p.commonapi.Node, rice.persistence.StorageManager, rice.persistence.Cache, int, java.lang.String, rice.p2p.past.PastPolicy, rice.persistence.StorageManager, rice.p2p.past.rawserialization.SocketStrategy)"><!-- --></A><H3>
PastImpl</H3>
<PRE>
public <B>PastImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;manager,
<A HREF="../../../rice/persistence/Cache.html" title="interface in rice.persistence">Cache</A>&nbsp;backup,
int&nbsp;replicas,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/past/PastPolicy.html" title="interface in rice.p2p.past">PastPolicy</A>&nbsp;policy,
<A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A>&nbsp;trash,
<A HREF="../../../rice/p2p/past/rawserialization/SocketStrategy.html" title="interface in rice.p2p.past.rawserialization">SocketStrategy</A>&nbsp;strategy)</PRE>
<DL>
<DD>Constructor for Past
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node below this Past implementation<DD><CODE>manager</CODE> - The storage manager to be used by Past<DD><CODE>replicas</CODE> - The number of object replicas<DD><CODE>instance</CODE> - The unique instance name of this Past</DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
public java.lang.String <B>toString</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getEnvironment()"><!-- --></A><H3>
getEnvironment</H3>
<PRE>
public <A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A> <B>getEnvironment</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#getEnvironment()">getEnvironment</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="buildReplicationManager(rice.p2p.commonapi.Node, java.lang.String)"><!-- --></A><H3>
buildReplicationManager</H3>
<PRE>
protected <A HREF="../../../rice/p2p/replication/manager/ReplicationManager.html" title="interface in rice.p2p.replication.manager">ReplicationManager</A> <B>buildReplicationManager</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
java.lang.String&nbsp;instance)</PRE>
<DL>
<DD>Internal method which builds the replication manager. Can be overridden by subclasses.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node to base the RM off of<DD><CODE>instance</CODE> - The instance name to use
<DT><B>Returns:</B><DD>The replication manager, ready for use</DL>
</DD>
</DL>
<HR>
<A NAME="getOutstandingMessages()"><!-- --></A><H3>
getOutstandingMessages</H3>
<PRE>
public <A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>[] <B>getOutstandingMessages</B>()</PRE>
<DL>
<DD>Returns of the outstanding messages. This is a DEBUGGING method ONLY!
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The list of all the outstanding messages</DL>
</DD>
</DL>
<HR>
<A NAME="getEndpoint()"><!-- --></A><H3>
getEndpoint</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A> <B>getEndpoint</B>()</PRE>
<DL>
<DD>Returns the endpoint associated with the Past - ONLY FOR TESTING - DO NOT USE
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The endpoint</DL>
</DD>
</DL>
<HR>
<A NAME="getUID()"><!-- --></A><H3>
getUID</H3>
<PRE>
protected int <B>getUID</B>()</PRE>
<DL>
<DD>Returns a new uid for a message
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>A new id</DL>
</DD>
</DL>
<HR>
<A NAME="getResponseContinuation(rice.p2p.past.messaging.PastMessage)"><!-- --></A><H3>
getResponseContinuation</H3>
<PRE>
protected <A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A> <B>getResponseContinuation</B>(<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;msg)</PRE>
<DL>
<DD>Returns a continuation which will respond to the given message.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>A new id</DL>
</DD>
</DL>
<HR>
<A NAME="getFetchResponseContinuation(rice.p2p.past.messaging.PastMessage)"><!-- --></A><H3>
getFetchResponseContinuation</H3>
<PRE>
protected <A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A> <B>getFetchResponseContinuation</B>(<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;msg)</PRE>
<DL>
<DD>Do like above, but use a socket
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>msg</CODE> -
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>
<A NAME="sendRequest(rice.p2p.commonapi.Id, rice.p2p.past.messaging.PastMessage, rice.Continuation)"><!-- --></A><H3>
sendRequest</H3>
<PRE>
protected void <B>sendRequest</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;message,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Sends a request message across the wire, and stores the appropriate
continuation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The destination id<DD><CODE>message</CODE> - The message to send.<DD><CODE>command</CODE> - The command to run once a result is received</DL>
</DD>
</DL>
<HR>
<A NAME="sendRequest(rice.p2p.commonapi.NodeHandle, rice.p2p.past.messaging.PastMessage, rice.Continuation)"><!-- --></A><H3>
sendRequest</H3>
<PRE>
protected void <B>sendRequest</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;handle,
<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;message,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Sends a request message across the wire, and stores the appropriate
continuation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>handle</CODE> - The node handle to send directly too<DD><CODE>message</CODE> - The message to send.<DD><CODE>command</CODE> - The command to run once a result is received</DL>
</DD>
</DL>
<HR>
<A NAME="sendRequest(rice.p2p.commonapi.Id, rice.p2p.past.messaging.PastMessage, rice.p2p.commonapi.NodeHandle, rice.Continuation)"><!-- --></A><H3>
sendRequest</H3>
<PRE>
protected void <B>sendRequest</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/past/messaging/PastMessage.html" title="class in rice.p2p.past.messaging">PastMessage</A>&nbsp;message,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Sends a request message across the wire, and stores the appropriate
continuation. Sends the message using the provided handle as a hint.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The destination id<DD><CODE>message</CODE> - The message to send.<DD><CODE>handle</CODE> - The first hop hint<DD><CODE>command</CODE> - The command to run once a result is received</DL>
</DD>
</DL>
<HR>
<A NAME="getHandles(rice.p2p.commonapi.Id, int, rice.Continuation)"><!-- --></A><H3>
getHandles</H3>
<PRE>
protected void <B>getHandles</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
int&nbsp;max,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Internal method which returns the handles to an object. It first checks to see if
the handles can be determined locally, and if so, returns. Otherwise, it sends a
LookupHandles messsage out to find out the nodes.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The id to fetch the handles for<DD><CODE>max</CODE> - The maximum number of handles to return<DD><CODE>command</CODE> - The command to call with the result (NodeHandle[])</DL>
</DD>
</DL>
<HR>
<A NAME="cache(rice.p2p.past.PastContent, rice.Continuation)"><!-- --></A><H3>
cache</H3>
<PRE>
public void <B>cache</B>(<A HREF="../../../rice/p2p/past/PastContent.html" title="interface in rice.p2p.past">PastContent</A>&nbsp;content,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Method which inserts the given object into the cache
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>content</CODE> - The content to cache<DD><CODE>command</CODE> - The command to run once done</DL>
</DD>
</DL>
<HR>
<A NAME="doInsert(rice.p2p.commonapi.Id, rice.p2p.past.PastImpl.MessageBuilder, rice.Continuation, boolean)"><!-- --></A><H3>
doInsert</H3>
<PRE>
protected void <B>doInsert</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/past/PastImpl.MessageBuilder.html" title="interface in rice.p2p.past">PastImpl.MessageBuilder</A>&nbsp;builder,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command,
boolean&nbsp;useSocket)</PRE>
<DL>
<DD>Internal method which actually performs an insert for a given object.
Here so that subclasses can override the types of insert messages
which are sent across the wire.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>obj</CODE> - The object to insert<DD><CODE>builder</CODE> - The object which builds the messages<DD><CODE>command</CODE> - The command to call once done</DL>
</DD>
</DL>
<HR>
<A NAME="insert(rice.p2p.past.PastContent, rice.Continuation)"><!-- --></A><H3>
insert</H3>
<PRE>
public void <B>insert</B>(<A HREF="../../../rice/p2p/past/PastContent.html" title="interface in rice.p2p.past">PastContent</A>&nbsp;obj,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#insert(rice.p2p.past.PastContent, rice.Continuation)">insert</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>obj</CODE> - the object to be inserted<DD><CODE>command</CODE> - Command to be performed when the result is received</DL>
</DD>
</DL>
<HR>
<A NAME="lookup(rice.p2p.commonapi.Id, rice.Continuation)"><!-- --></A><H3>
lookup</H3>
<PRE>
public void <B>lookup</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&lt;<A HREF="../../../rice/p2p/past/PastContent.html" title="interface in rice.p2p.past">PastContent</A>,java.lang.Exception&gt;&nbsp;command)</PRE>
<DL>
<DD>Retrieves the object stored in this instance of Past with the
given ID. Asynchronously returns a PastContent object as the
result to the provided Continuation, or a PastException. This
method is provided for convenience; its effect is identical to a
lookupHandles() and a subsequent fetch() to the handle that is
nearest in the network.
The client must authenticate the object. In case of failure, an
alternate replica of the object can be obtained via
lookupHandles() and fetch().
This method is not safe if the object is immutable and storage
nodes are not trusted. In this case, clients should used the
lookUpHandles method to obtains the handles of all primary
replicas and determine which replica is fresh in an
application-specific manner.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#lookup(rice.p2p.commonapi.Id, rice.Continuation)">lookup</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - the key to be queried<DD><CODE>command</CODE> - Command to be performed when the result is received</DL>
</DD>
</DL>
<HR>
<A NAME="lookup(rice.p2p.commonapi.Id, boolean, rice.Continuation)"><!-- --></A><H3>
lookup</H3>
<PRE>
public void <B>lookup</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
boolean&nbsp;cache,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Method which performs the same as lookup(), but allows the
callee to specify if the data should be cached.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#lookup(rice.p2p.commonapi.Id, boolean, rice.Continuation)">lookup</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - the key to be queried<DD><CODE>cache</CODE> - Whether or not the data should be cached<DD><CODE>command</CODE> - Command to be performed when the result is received</DL>
</DD>
</DL>
<HR>
<A NAME="lookupHandles(rice.p2p.commonapi.Id, int, rice.Continuation)"><!-- --></A><H3>
lookupHandles</H3>
<PRE>
public void <B>lookupHandles</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
int&nbsp;max,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Retrieves the handles of up to max replicas of the object stored
in this instance of Past with the given ID. Asynchronously
returns an array of PastContentHandles as the result to the
provided Continuation, or a PastException.
Each replica handle is obtained from a different primary storage
root for the the given key. If max exceeds the replication factor
r of this Past instance, only r replicas are returned.
This method will return a PastContentHandle[] array containing all
of the handles.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#lookupHandles(rice.p2p.commonapi.Id, int, rice.Continuation)">lookupHandles</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - the key to be queried<DD><CODE>max</CODE> - the maximal number of replicas requested<DD><CODE>command</CODE> - Command to be performed when the result is received</DL>
</DD>
</DL>
<HR>
<A NAME="lookupHandle(rice.p2p.commonapi.Id, rice.p2p.commonapi.NodeHandle, rice.Continuation)"><!-- --></A><H3>
lookupHandle</H3>
<PRE>
public void <B>lookupHandle</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;handle,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Retrieves the handle for the given object stored on the requested
node. Asynchronously returns a PostContentHandle (or null) to
the provided continuation.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#lookupHandle(rice.p2p.commonapi.Id, rice.p2p.commonapi.NodeHandle, rice.Continuation)">lookupHandle</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - the key to be queried<DD><CODE>handle</CODE> - The node on which the handle is requested<DD><CODE>command</CODE> - Command to be performed when the result is received</DL>
</DD>
</DL>
<HR>
<A NAME="fetch(rice.p2p.past.PastContentHandle, rice.Continuation)"><!-- --></A><H3>
fetch</H3>
<PRE>
public void <B>fetch</B>(<A HREF="../../../rice/p2p/past/PastContentHandle.html" title="interface in rice.p2p.past">PastContentHandle</A>&nbsp;handle,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Retrieves the object associated with a given content handle.
Asynchronously returns a PastContent object as the result to the
provided Continuation, or a PastException.
The client must authenticate the object. In case of failure, an
alternate replica can be obtained using a different handle obtained via
lookupHandles().
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#fetch(rice.p2p.past.PastContentHandle, rice.Continuation)">fetch</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - the key to be queried<DD><CODE>command</CODE> - Command to be performed when the result is received</DL>
</DD>
</DL>
<HR>
<A NAME="getLocalNodeHandle()"><!-- --></A><H3>
getLocalNodeHandle</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A> <B>getLocalNodeHandle</B>()</PRE>
<DL>
<DD>get the nodeHandle of the local Past node
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#getLocalNodeHandle()">getLocalNodeHandle</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>the nodehandle</DL>
</DD>
</DL>
<HR>
<A NAME="getReplicationFactor()"><!-- --></A><H3>
getReplicationFactor</H3>
<PRE>
public int <B>getReplicationFactor</B>()</PRE>
<DL>
<DD>Returns the number of replicas used in this Past
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#getReplicationFactor()">getReplicationFactor</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>the number of replicas for each object</DL>
</DD>
</DL>
<HR>
<A NAME="forward(rice.p2p.commonapi.RouteMessage)"><!-- --></A><H3>
forward</H3>
<PRE>
public boolean <B>forward</B>(<A HREF="../../../rice/p2p/commonapi/RouteMessage.html" title="interface in rice.p2p.commonapi">RouteMessage</A>&nbsp;message)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Application.html#forward(rice.p2p.commonapi.RouteMessage)">forward</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - The message being sent, containing an internal message
along with a destination key and nodeHandle next hop.
<DT><B>Returns:</B><DD>Whether or not to forward the message further</DL>
</DD>
</DL>
<HR>
<A NAME="deliver(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message)"><!-- --></A><H3>
deliver</H3>
<PRE>
public void <B>deliver</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;message)</PRE>
<DL>
<DD>This method is called on the application at the destination node
for the given id.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Application.html#deliver(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message)">deliver</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The destination id of the message<DD><CODE>message</CODE> - The message being sent</DL>
</DD>
</DL>
<HR>
<A NAME="update(rice.p2p.commonapi.NodeHandle, boolean)"><!-- --></A><H3>
update</H3>
<PRE>
public void <B>update</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;handle,
boolean&nbsp;joined)</PRE>
<DL>
<DD>This method is invoked to inform the application that the given node
has either joined or left the neighbor set of the local node, as the set
would be returned by the neighborSet call.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Application.html#update(rice.p2p.commonapi.NodeHandle, boolean)">update</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>handle</CODE> - The handle that has joined/left<DD><CODE>joined</CODE> - Whether the node has joined or left</DL>
</DD>
</DL>
<HR>
<A NAME="fetch(rice.p2p.commonapi.Id, rice.p2p.commonapi.NodeHandle, rice.Continuation)"><!-- --></A><H3>
fetch</H3>
<PRE>
public void <B>fetch</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html#fetch(rice.p2p.commonapi.Id, rice.p2p.commonapi.NodeHandle, rice.Continuation)">fetch</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html" title="interface in rice.p2p.replication.manager">ReplicationManagerClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The id to fetch<DD><CODE>hint</CODE> - A hint where to find the key from. This is where the local node
heard about the key.<DD><CODE>command</CODE> - The command to return the result to</DL>
</DD>
</DL>
<HR>
<A NAME="remove(rice.p2p.commonapi.Id, rice.Continuation)"><!-- --></A><H3>
remove</H3>
<PRE>
public void <B>remove</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html#remove(rice.p2p.commonapi.Id, rice.Continuation)">remove</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html" title="interface in rice.p2p.replication.manager">ReplicationManagerClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The id to remove</DL>
</DD>
</DL>
<HR>
<A NAME="scan(rice.p2p.commonapi.IdRange)"><!-- --></A><H3>
scan</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/IdSet.html" title="interface in rice.p2p.commonapi">IdSet</A> <B>scan</B>(<A HREF="../../../rice/p2p/commonapi/IdRange.html" title="interface in rice.p2p.commonapi">IdRange</A>&nbsp;range)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html#scan(rice.p2p.commonapi.IdRange)">scan</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html" title="interface in rice.p2p.replication.manager">ReplicationManagerClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>range</CODE> - the requested range</DL>
</DD>
</DL>
<HR>
<A NAME="scan()"><!-- --></A><H3>
scan</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/IdSet.html" title="interface in rice.p2p.commonapi">IdSet</A> <B>scan</B>()</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>range</CODE> - the requested range</DL>
</DD>
</DL>
<HR>
<A NAME="exists(rice.p2p.commonapi.Id)"><!-- --></A><H3>
exists</H3>
<PRE>
public boolean <B>exists</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id)</PRE>
<DL>
<DD>This upcall should return whether or not the given id is currently stored
by the client.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html#exists(rice.p2p.commonapi.Id)">exists</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html" title="interface in rice.p2p.replication.manager">ReplicationManagerClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The id in question
<DT><B>Returns:</B><DD>Whether or not the id exists</DL>
</DD>
</DL>
<HR>
<A NAME="existsInOverlay(rice.p2p.commonapi.Id, rice.Continuation)"><!-- --></A><H3>
existsInOverlay</H3>
<PRE>
public void <B>existsInOverlay</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html#existsInOverlay(rice.p2p.commonapi.Id, rice.Continuation)">ReplicationManagerClient</A></CODE></B></DD>
<DD>This upcall should return whether or not the given id is currently stored
somewhere in the overlay by the client.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html#existsInOverlay(rice.p2p.commonapi.Id, rice.Continuation)">existsInOverlay</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html" title="interface in rice.p2p.replication.manager">ReplicationManagerClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The id in question</DL>
</DD>
</DL>
<HR>
<A NAME="reInsert(rice.p2p.commonapi.Id, rice.Continuation)"><!-- --></A><H3>
reInsert</H3>
<PRE>
public void <B>reInsert</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html#reInsert(rice.p2p.commonapi.Id, rice.Continuation)">ReplicationManagerClient</A></CODE></B></DD>
<DD>Asks a client to reinsert an object it already holds into the overlay
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html#reInsert(rice.p2p.commonapi.Id, rice.Continuation)">reInsert</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/replication/manager/ReplicationManagerClient.html" title="interface in rice.p2p.replication.manager">ReplicationManagerClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The id in question</DL>
</DD>
</DL>
<HR>
<A NAME="getReplication()"><!-- --></A><H3>
getReplication</H3>
<PRE>
public <A HREF="../../../rice/p2p/replication/Replication.html" title="interface in rice.p2p.replication">Replication</A> <B>getReplication</B>()</PRE>
<DL>
<DD>Returns the replica manager for this Past instance. Should *ONLY* be used
for testing. Messing with this will cause unknown behavior.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>This Past's replica manager</DL>
</DD>
</DL>
<HR>
<A NAME="getStorageManager()"><!-- --></A><H3>
getStorageManager</H3>
<PRE>
public <A HREF="../../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A> <B>getStorageManager</B>()</PRE>
<DL>
<DD>Returns this Past's storage manager. Should *ONLY* be used
for testing. Messing with this will cause unknown behavior.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>This Past's storage manager.</DL>
</DD>
</DL>
<HR>
<A NAME="getInstance()"><!-- --></A><H3>
getInstance</H3>
<PRE>
public java.lang.String <B>getInstance</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#getInstance()">getInstance</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>
<A NAME="setContentDeserializer(rice.p2p.past.rawserialization.PastContentDeserializer)"><!-- --></A><H3>
setContentDeserializer</H3>
<PRE>
public void <B>setContentDeserializer</B>(<A HREF="../../../rice/p2p/past/rawserialization/PastContentDeserializer.html" title="interface in rice.p2p.past.rawserialization">PastContentDeserializer</A>&nbsp;deserializer)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#setContentDeserializer(rice.p2p.past.rawserialization.PastContentDeserializer)">setContentDeserializer</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="setContentHandleDeserializer(rice.p2p.past.rawserialization.PastContentHandleDeserializer)"><!-- --></A><H3>
setContentHandleDeserializer</H3>
<PRE>
public void <B>setContentHandleDeserializer</B>(<A HREF="../../../rice/p2p/past/rawserialization/PastContentHandleDeserializer.html" title="interface in rice.p2p.past.rawserialization">PastContentHandleDeserializer</A>&nbsp;deserializer)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/past/Past.html#setContentHandleDeserializer(rice.p2p.past.rawserialization.PastContentHandleDeserializer)">setContentHandleDeserializer</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/past/Past.html" title="interface in rice.p2p.past">Past</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/PastImpl.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
Rice Pastry API</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../rice/p2p/past/PastException.html" title="class in rice.p2p.past"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/past/PastImpl.MessageBuilder.html" title="interface in rice.p2p.past"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/p2p/past/PastImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="PastImpl.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
<i>Copyright &#169; 2001-2005 - Rice Pastry.</i>
</BODY>
</HTML>