FreePastry/docs/javadoc/rice/pastry/commonapi/PastryEndpoint.html
ChronosX88 aaa73fe8b3 Pew
2019-05-13 16:45:05 +04:00

1563 lines
92 KiB
HTML

<!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:01:06 CET 2009 -->
<TITLE>
PastryEndpoint (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="PastryEndpoint (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/PastryEndpoint.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;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../rice/pastry/commonapi/PastryEndpointMessage.html" title="class in rice.pastry.commonapi"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/pastry/commonapi/PastryEndpoint.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="PastryEndpoint.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;NESTED&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.pastry.commonapi</FONT>
<BR>
Class PastryEndpoint</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">rice.pastry.client.PastryAppl</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>rice.pastry.commonapi.PastryEndpoint</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A>, <A HREF="../../../rice/p2p/commonapi/rawserialization/NodeHandleReader.html" title="interface in rice.p2p.commonapi.rawserialization">NodeHandleReader</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>PastryEndpoint</B><DT>extends <A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A><DT>implements <A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></DL>
</PRE>
<P>
This class serves as gluecode, which allows applications written for the common
API to work with pastry.
<P>
<P>
<DL>
<DT><B>Version:</B></DT>
<DD>$Id: PastryEndpoint.java 4654 2009-01-08 16:33:07Z jeffh $</DD>
<DT><B>Author:</B></DT>
<DD>Alan Mislove, Peter Druschel</DD>
</DL>
<HR>
<P>
<!-- =========== 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/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#application">application</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_rice.pastry.client.PastryAppl"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class rice.pastry.client.<A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#address">address</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#deserializer">deserializer</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#instance">instance</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#logger">logger</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#options">options</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#receiver">receiver</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#thePastryNode">thePastryNode</A></CODE></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/pastry/commonapi/PastryEndpoint.html#PastryEndpoint(rice.pastry.PastryNode, rice.p2p.commonapi.Application, java.lang.String, boolean)">PastryEndpoint</A></B>(<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;pn,
<A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>&nbsp;application,
java.lang.String&nbsp;instance,
boolean&nbsp;register)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#PastryEndpoint(rice.pastry.PastryNode, rice.p2p.commonapi.Application, java.lang.String, int, boolean)">PastryEndpoint</A></B>(<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;pn,
<A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>&nbsp;application,
java.lang.String&nbsp;instance,
int&nbsp;address,
boolean&nbsp;register)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor.</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>&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/pastry/commonapi/PastryEndpoint.html#coalesce(rice.p2p.commonapi.NodeHandle)">coalesce</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;newHandle)</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;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#deliverWhenNotReady()">deliverWhenNotReady</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Instructs the MessageDispatch how to behave when the PastryNode is not ready.</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/pastry/commonapi/PastryEndpoint.html#destroy()">destroy</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called when PastryNode is destroyed.</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/pastry/commonapi/PastryEndpoint.html#enrouteMessage(rice.pastry.messaging.Message, rice.pastry.Id, rice.pastry.NodeHandle, rice.pastry.routing.SendOptions)">enrouteMessage</A></B>(<A HREF="../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg,
<A HREF="../../../rice/pastry/Id.html" title="class in rice.pastry">Id</A>&nbsp;key,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;nextHop,
<A HREF="../../../rice/pastry/routing/SendOptions.html" title="class in rice.pastry.routing">SendOptions</A>&nbsp;opt)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called by pastry when a message is enroute and is passing through this node.</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/pastry/commonapi/PastryEndpoint.html#getAppId()">getAppId</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/rawserialization/MessageDeserializer.html" title="interface in rice.p2p.commonapi.rawserialization">MessageDeserializer</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#getDeserializer()">getDeserializer</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the deserializer.</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/pastry/commonapi/PastryEndpoint.html#getEnvironment()">getEnvironment</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the environment.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#getId()">getId</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this node's id, which is its identifier in the namespace.</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/pastry/commonapi/PastryEndpoint.html#getInstance()">getInstance</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a unique instance name of this endpoint, sort of a mailbox name for this
application.</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/pastry/commonapi/PastryEndpoint.html#getLocalNodeHandle()">getLocalNodeHandle</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a handle to the local node below this endpoint.</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/pastry/commonapi/PastryEndpoint.html#isAlive(rice.p2p.commonapi.NodeHandle)">isAlive</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;nh)</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/pastry/commonapi/PastryEndpoint.html#leafSetChange(rice.pastry.NodeHandle, boolean)">leafSetChange</A></B>(<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;nh,
boolean&nbsp;wasAdded)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called by pastry when the leaf set changes.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#localLookup(rice.p2p.commonapi.Id, int, boolean)">localLookup</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
int&nbsp;num,
boolean&nbsp;safe)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method produces a list of nodes that can be used as next
hops on a route towards key, such that the resulting route
satisfies the overlay protocol's bounds on the number of hops
taken.</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/pastry/commonapi/PastryEndpoint.html#messageForAppl(rice.pastry.messaging.Message)">messageForAppl</A></B>(<A HREF="../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called by pastry when a message arrives for this application.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#neighborSet(int)">neighborSet</A></B>(int&nbsp;num)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method produces an unordered list of nodehandles that are
neighbors of the local node in the ID space.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.List&lt;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#networkNeighbors(int)">networkNeighbors</A></B>(int&nbsp;num)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an ordered list of the nearest known neighbors.</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/pastry/commonapi/PastryEndpoint.html#process(rice.Executable, rice.Continuation)">process</A></B>(<A HREF="../../../rice/Executable.html" title="interface in rice">Executable</A>&nbsp;task,
<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;Schedules a job for processing on the dedicated processing thread.</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/pastry/commonapi/PastryEndpoint.html#proximity(rice.p2p.commonapi.NodeHandle)">proximity</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;nh)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This replaces NodeHandle.proximity(), so that you don't have to have a "coalesced" NodeHandle.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/IdRange.html" title="interface in rice.p2p.commonapi">IdRange</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#range(rice.p2p.commonapi.NodeHandle, int, rice.p2p.commonapi.Id)">range</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;n,
int&nbsp;r,
<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method provides information about ranges of keys for which
the node n is currently a r-root.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/IdRange.html" title="interface in rice.p2p.commonapi">IdRange</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#range(rice.p2p.commonapi.NodeHandle, int, rice.p2p.commonapi.Id, boolean)">range</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;n,
int&nbsp;r,
<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
boolean&nbsp;cumulative)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method provides information about ranges of keys for which
the node n is currently a r-root.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#readId(rice.p2p.commonapi.rawserialization.InputBuffer, short)">readId</A></B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/InputBuffer.html" title="interface in rice.p2p.commonapi.rawserialization">InputBuffer</A>&nbsp;buf,
short&nbsp;type)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;To use a more efficient serialization format than Java Serialization</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/IdRange.html" title="interface in rice.p2p.commonapi">IdRange</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#readIdRange(rice.p2p.commonapi.rawserialization.InputBuffer)">readIdRange</A></B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/InputBuffer.html" title="interface in rice.p2p.commonapi.rawserialization">InputBuffer</A>&nbsp;buf)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;To use Raw Serialization</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/pastry/commonapi/PastryEndpoint.html#readNodeHandle(rice.p2p.commonapi.rawserialization.InputBuffer)">readNodeHandle</A></B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/InputBuffer.html" title="interface in rice.p2p.commonapi.rawserialization">InputBuffer</A>&nbsp;buf)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;To use Raw Serialization</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#readNodeHandleSet(rice.p2p.commonapi.rawserialization.InputBuffer, short)">readNodeHandleSet</A></B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/InputBuffer.html" title="interface in rice.p2p.commonapi.rawserialization">InputBuffer</A>&nbsp;buf,
short&nbsp;type)</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/pastry/commonapi/PastryEndpoint.html#receiveMessage(rice.pastry.messaging.Message)">receiveMessage</A></B>(<A HREF="../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called by pastry to deliver a message to this client.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#replicaSet(rice.p2p.commonapi.Id, int)">replicaSet</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
int&nbsp;maxRank)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method returns an ordered set of nodehandles on which
replicas of the object with key can be stored.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#replicaSet(rice.p2p.commonapi.Id, int, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.NodeHandleSet)">replicaSet</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
int&nbsp;maxRank,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;root,
<A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A>&nbsp;set)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This methods returns an ordered set of nodehandles on which replicas of an object with
a given id can be stored.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle)">route</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This operation forwards a message towards the root of
key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification)">route</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/p2p/commonapi/DeliveryNotification.html" title="interface in rice.p2p.commonapi">DeliveryNotification</A>&nbsp;deliverAckToMe)</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/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification, java.util.Map)">route</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/p2p/commonapi/DeliveryNotification.html" title="interface in rice.p2p.commonapi">DeliveryNotification</A>&nbsp;deliverAckToMe,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method makes an attempt to route the message to the root of the given id.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle)">route</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This duplication of the above code is to make a fast path for the RawMessage.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification)">route</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/p2p/commonapi/DeliveryNotification.html" title="interface in rice.p2p.commonapi">DeliveryNotification</A>&nbsp;deliverAckToMe)</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/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification, java.util.Map)">route</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/p2p/commonapi/DeliveryNotification.html" title="interface in rice.p2p.commonapi">DeliveryNotification</A>&nbsp;deliverAckToMe,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Same as the other call, but uses the Raw serialization rather than java serialization.</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/pastry/commonapi/PastryEndpoint.html#routingConsistentFor(rice.p2p.commonapi.Id)">routingConsistentFor</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;Can we guarantee that this id is currently ours, and routing will be consistent?
Note that this has some real timing implications, so don't cache the returned value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/CancellableTask.html" title="interface in rice.p2p.commonapi">CancellableTask</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#scheduleMessage(rice.p2p.commonapi.Message, long)">scheduleMessage</A></B>(<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;message,
long&nbsp;delay)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Schedules a message to be delivered to this application after the provided number of
milliseconds.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/CancellableTask.html" title="interface in rice.p2p.commonapi">CancellableTask</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#scheduleMessage(rice.p2p.commonapi.Message, long, long)">scheduleMessage</A></B>(<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;message,
long&nbsp;delay,
long&nbsp;period)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Schedules a message to be delivered to this application every period number of
milliseconds, after delay number of miliseconds have passed.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/CancellableTask.html" title="interface in rice.p2p.commonapi">CancellableTask</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/commonapi/PastryEndpoint.html#scheduleMessageAtFixedRate(rice.p2p.commonapi.Message, long, long)">scheduleMessageAtFixedRate</A></B>(<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;msg,
long&nbsp;delay,
long&nbsp;period)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Schedule the specified message for repeated fixed-rate delivery to the
local node, beginning after the specified delay.</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/pastry/commonapi/PastryEndpoint.html#setConsistentRouting(boolean)">setConsistentRouting</A></B>(boolean&nbsp;val)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default value is true
Consistent routing causes RouteMessages to be dropped if we are not sure that we are
responsible for our current id range.</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/pastry/commonapi/PastryEndpoint.html#setDeserializer(rice.p2p.commonapi.rawserialization.MessageDeserializer)">setDeserializer</A></B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/MessageDeserializer.html" title="interface in rice.p2p.commonapi.rawserialization">MessageDeserializer</A>&nbsp;md)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;To use a more efficient serialization format than Java Serialization</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/pastry/commonapi/PastryEndpoint.html#setSendOptions(java.util.Map)">setSendOptions</A></B>(java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uses these options as defaults.</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/pastry/commonapi/PastryEndpoint.html#toString()">toString</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_rice.pastry.client.PastryAppl"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class rice.pastry.client.<A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#accept(rice.p2p.commonapi.appsocket.AppSocketReceiver)">accept</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#canReceiveSocket()">canReceiveSocket</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#connect(rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.appsocket.AppSocketReceiver, int)">connect</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#finishReceiveSocket(rice.p2p.commonapi.appsocket.AppSocket)">finishReceiveSocket</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#getAddress()">getAddress</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#getLeafSet()">getLeafSet</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#getNodeHandle()">getNodeHandle</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#getNodeId()">getNodeId</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#getRoutingTable()">getRoutingTable</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#isClosest(rice.pastry.Id)">isClosest</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#notifyReady()">notifyReady</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#receiveMessageInternal(rice.pastry.messaging.RawMessageDelivery)">receiveMessageInternal</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#register()">register</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#routeMsg(rice.pastry.Id, rice.pastry.messaging.Message, rice.pastry.routing.SendOptions)">routeMsg</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#routeMsg(rice.pastry.Id, rice.pastry.messaging.Message, rice.pastry.routing.SendOptions, rice.p2p.commonapi.DeliveryNotification)">routeMsg</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#routeMsgDirect(rice.pastry.NodeHandle, rice.pastry.messaging.Message, rice.pastry.routing.SendOptions)">routeMsgDirect</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#routeSetChange(rice.pastry.NodeHandle, boolean)">routeSetChange</A></CODE></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;<A NAME="methods_inherited_from_class_rice.p2p.commonapi.Endpoint"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from interface rice.p2p.commonapi.<A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#accept(rice.p2p.commonapi.appsocket.AppSocketReceiver)">accept</A>, <A HREF="../../../rice/p2p/commonapi/Endpoint.html#connect(rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.appsocket.AppSocketReceiver, int)">connect</A>, <A HREF="../../../rice/p2p/commonapi/Endpoint.html#register()">register</A></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="application"><!-- --></A><H3>
application</H3>
<PRE>
protected <A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A> <B>application</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="PastryEndpoint(rice.pastry.PastryNode, rice.p2p.commonapi.Application, java.lang.String, boolean)"><!-- --></A><H3>
PastryEndpoint</H3>
<PRE>
public <B>PastryEndpoint</B>(<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;pn,
<A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>&nbsp;application,
java.lang.String&nbsp;instance,
boolean&nbsp;register)</PRE>
<DL>
<DD>Constructor.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>pn</CODE> - the pastry node that the application attaches to.</DL>
</DL>
<HR>
<A NAME="PastryEndpoint(rice.pastry.PastryNode, rice.p2p.commonapi.Application, java.lang.String, int, boolean)"><!-- --></A><H3>
PastryEndpoint</H3>
<PRE>
public <B>PastryEndpoint</B>(<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;pn,
<A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>&nbsp;application,
java.lang.String&nbsp;instance,
int&nbsp;address,
boolean&nbsp;register)</PRE>
<DL>
<DD>Constructor.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>pn</CODE> - the pastry node that the application attaches to.</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="getId()"><!-- --></A><H3>
getId</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> <B>getId</B>()</PRE>
<DL>
<DD>Returns this node's id, which is its identifier in the namespace.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#getId()">getId</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The local node's id</DL>
</DD>
</DL>
<HR>
<A NAME="route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
route</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A> <B>route</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD>This operation forwards a message towards the root of
key. The optional hint argument specifies a node
that should be used as a first hop in routing the message. A
good hint, e.g. one that refers to the key's current root, can
result in the message being delivered in one hop; a bad hint
adds at most one extra hop to the route. Either K or hint may
be NULL, but not both. The operation provides a best-effort
service: the message may be lost, duplicated, corrupted, or
delayed indefinitely.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle)">route</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - the key<DD><CODE>msg</CODE> - the message to deliver.<DD><CODE>hint</CODE> - the hint</DL>
</DD>
</DL>
<HR>
<A NAME="route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification)"><!-- --></A><H3>
route</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A> <B>route</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/p2p/commonapi/DeliveryNotification.html" title="interface in rice.p2p.commonapi">DeliveryNotification</A>&nbsp;deliverAckToMe)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification)">route</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification, java.util.Map)"><!-- --></A><H3>
route</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A> <B>route</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/p2p/commonapi/DeliveryNotification.html" title="interface in rice.p2p.commonapi">DeliveryNotification</A>&nbsp;deliverAckToMe,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification, java.util.Map)">Endpoint</A></CODE></B></DD>
<DD>This method makes an attempt to route the message to the root of the given id.
The hint handle will be the first hop in the route. If the id field is null, then
the message is routed directly to the given node, and delivers the message
there. If the hint field is null, then this method makes an attempt to route
the message to the root of the given id. Note that one of the id and hint fields can
be null, but not both.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification, java.util.Map)">route</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The destination Id of the message.<DD><CODE>msg</CODE> - The message to deliver<DD><CODE>hint</CODE> - The first node to send this message to, optional<DD><CODE>deliverAckToMe</CODE> - notified when the message is sent
<DT><B>Returns:</B><DD>can cancel the request</DL>
</DD>
</DL>
<HR>
<A NAME="route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
route</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A> <B>route</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD>This duplication of the above code is to make a fast path for the RawMessage. Though the codeblock
looks identical, it is acually calling a different PEM constructor.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle)">route</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification)"><!-- --></A><H3>
route</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A> <B>route</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/p2p/commonapi/DeliveryNotification.html" title="interface in rice.p2p.commonapi">DeliveryNotification</A>&nbsp;deliverAckToMe)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification)">route</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification, java.util.Map)"><!-- --></A><H3>
route</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/MessageReceipt.html" title="interface in rice.p2p.commonapi">MessageReceipt</A> <B>route</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&nbsp;msg,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint,
<A HREF="../../../rice/p2p/commonapi/DeliveryNotification.html" title="interface in rice.p2p.commonapi">DeliveryNotification</A>&nbsp;deliverAckToMe,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification, java.util.Map)">Endpoint</A></CODE></B></DD>
<DD>Same as the other call, but uses the Raw serialization rather than java serialization.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#route(rice.p2p.commonapi.Id, rice.p2p.commonapi.rawserialization.RawMessage, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.DeliveryNotification, java.util.Map)">route</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="scheduleMessage(rice.p2p.commonapi.Message, long)"><!-- --></A><H3>
scheduleMessage</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/CancellableTask.html" title="interface in rice.p2p.commonapi">CancellableTask</A> <B>scheduleMessage</B>(<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;message,
long&nbsp;delay)</PRE>
<DL>
<DD>Schedules a message to be delivered to this application after the provided number of
milliseconds.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#scheduleMessage(rice.p2p.commonapi.Message, long)">scheduleMessage</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - The message to be delivered<DD><CODE>delay</CODE> - The number of milliseconds to wait before delivering the message</DL>
</DD>
</DL>
<HR>
<A NAME="scheduleMessage(rice.p2p.commonapi.Message, long, long)"><!-- --></A><H3>
scheduleMessage</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/CancellableTask.html" title="interface in rice.p2p.commonapi">CancellableTask</A> <B>scheduleMessage</B>(<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;message,
long&nbsp;delay,
long&nbsp;period)</PRE>
<DL>
<DD>Schedules a message to be delivered to this application every period number of
milliseconds, after delay number of miliseconds have passed.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#scheduleMessage(rice.p2p.commonapi.Message, long, long)">scheduleMessage</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - The message to be delivered<DD><CODE>delay</CODE> - The number of milliseconds to wait before delivering the fist message<DD><CODE>delay</CODE> - The number of milliseconds to wait before delivering subsequent messages</DL>
</DD>
</DL>
<HR>
<A NAME="scheduleMessageAtFixedRate(rice.p2p.commonapi.Message, long, long)"><!-- --></A><H3>
scheduleMessageAtFixedRate</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/CancellableTask.html" title="interface in rice.p2p.commonapi">CancellableTask</A> <B>scheduleMessageAtFixedRate</B>(<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;msg,
long&nbsp;delay,
long&nbsp;period)</PRE>
<DL>
<DD>Schedule the specified message for repeated fixed-rate delivery to the
local node, beginning after the specified delay. Subsequent executions take
place at approximately regular intervals, separated by the specified
period.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#scheduleMessageAtFixedRate(rice.p2p.commonapi.Message, long, long)">scheduleMessageAtFixedRate</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>msg</CODE> - a message that will be delivered to the local node after the
specified delay<DD><CODE>delay</CODE> - time in milliseconds before message is to be delivered<DD><CODE>period</CODE> - time in milliseconds between successive message deliveries
<DT><B>Returns:</B><DD>the scheduled event object; can be used to cancel the message</DL>
</DD>
</DL>
<HR>
<A NAME="localLookup(rice.p2p.commonapi.Id, int, boolean)"><!-- --></A><H3>
localLookup</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A> <B>localLookup</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
int&nbsp;num,
boolean&nbsp;safe)</PRE>
<DL>
<DD>This method produces a list of nodes that can be used as next
hops on a route towards key, such that the resulting route
satisfies the overlay protocol's bounds on the number of hops
taken.
If safe is true, the expected fraction of faulty
nodes in the list is guaranteed to be no higher than the
fraction of faulty nodes in the overlay; if false, the set may
be chosen to optimize performance at the expense of a
potentially higher fraction of faulty nodes. This option allows
applications to implement routing in overlays with byzantine
node failures. Implementations that assume fail-stop behavior
may ignore the safe argument. The fraction of faulty
nodes in the returned list may be higher if the safe
parameter is not true because, for instance, malicious nodes
have caused the local node to build a routing table that is
biased towards malicious nodes~\cite{Castro02osdi}.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#localLookup(rice.p2p.commonapi.Id, int, boolean)">localLookup</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - the message's key<DD><CODE>num</CODE> - the maximal number of next hops nodes requested<DD><CODE>safe</CODE> -
<DT><B>Returns:</B><DD>the nodehandle set</DL>
</DD>
</DL>
<HR>
<A NAME="neighborSet(int)"><!-- --></A><H3>
neighborSet</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A> <B>neighborSet</B>(int&nbsp;num)</PRE>
<DL>
<DD>This method produces an unordered list of nodehandles that are
neighbors of the local node in the ID space. Up to num
node handles are returned.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#neighborSet(int)">neighborSet</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>num</CODE> - the maximal number of nodehandles requested
<DT><B>Returns:</B><DD>the nodehandle set</DL>
</DD>
</DL>
<HR>
<A NAME="replicaSet(rice.p2p.commonapi.Id, int)"><!-- --></A><H3>
replicaSet</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A> <B>replicaSet</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
int&nbsp;maxRank)</PRE>
<DL>
<DD>This method returns an ordered set of nodehandles on which
replicas of the object with key can be stored. The call returns
nodes with a rank up to and including max_rank. If max_rank
exceeds the implementation's maximum replica set size, then its
maximum replica set is returned. The returned nodes may be
used for replicating data since they are precisely the nodes
which become roots for the key when the local node fails.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#replicaSet(rice.p2p.commonapi.Id, int)">replicaSet</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - the key<DD><CODE>max_rank</CODE> - the maximal number of nodehandles returned
<DT><B>Returns:</B><DD>the replica set</DL>
</DD>
</DL>
<HR>
<A NAME="replicaSet(rice.p2p.commonapi.Id, int, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.NodeHandleSet)"><!-- --></A><H3>
replicaSet</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A> <B>replicaSet</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
int&nbsp;maxRank,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;root,
<A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A>&nbsp;set)</PRE>
<DL>
<DD>This methods returns an ordered set of nodehandles on which replicas of an object with
a given id can be stored. The call returns nodes up to and including a node with maxRank.
This call also allows the application to provide a remote "center" node, as well as
other nodes in the vicinity.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#replicaSet(rice.p2p.commonapi.Id, int, rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.NodeHandleSet)">replicaSet</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The object's id.<DD><CODE>maxRank</CODE> - The number of desired replicas.<DD><CODE>handle</CODE> - The root handle of the remove set<DD><CODE>set</CODE> - The set of other nodes around the root handle</DL>
</DD>
</DL>
<HR>
<A NAME="range(rice.p2p.commonapi.NodeHandle, int, rice.p2p.commonapi.Id, boolean)"><!-- --></A><H3>
range</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/IdRange.html" title="interface in rice.p2p.commonapi">IdRange</A> <B>range</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;n,
int&nbsp;r,
<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key,
boolean&nbsp;cumulative)</PRE>
<DL>
<DD>This method provides information about ranges of keys for which
the node n is currently a r-root. The operations returns null
if the range could not be determined. It is an error to query
the range of a node not present in the neighbor set as returned
by the update upcall or the neighborSet call.
Some implementations may have multiple, disjoint ranges of keys
for which a given node is responsible (Pastry has two). The
parameter key allows the caller to specify which range should
be returned. If the node referenced by n is the r-root for
key, then the resulting range includes key. Otherwise, the
result is the nearest range clockwise from key for which n is
responsible.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#range(rice.p2p.commonapi.NodeHandle, int, rice.p2p.commonapi.Id, boolean)">range</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>n</CODE> - nodeHandle of the node whose range is being queried<DD><CODE>r</CODE> - the rank<DD><CODE>key</CODE> - the key<DD><CODE>cumulative</CODE> - if true, returns ranges for which n is an i-root for 0<i<=r
<DT><B>Returns:</B><DD>the range of keys, or null if range could not be determined for the given node and rank</DL>
</DD>
</DL>
<HR>
<A NAME="range(rice.p2p.commonapi.NodeHandle, int, rice.p2p.commonapi.Id)"><!-- --></A><H3>
range</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/IdRange.html" title="interface in rice.p2p.commonapi">IdRange</A> <B>range</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;n,
int&nbsp;r,
<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;key)</PRE>
<DL>
<DD>This method provides information about ranges of keys for which
the node n is currently a r-root. The operations returns null
if the range could not be determined. It is an error to query
the range of a node not present in the neighbor set as returned
by the update upcall or the neighborSet call.
Some implementations may have multiple, disjoint ranges of keys
for which a given node is responsible (Pastry has two). The
parameter key allows the caller to specify which range should
be returned. If the node referenced by n is the r-root for
key, then the resulting range includes key. Otherwise, the
result is the nearest range clockwise from key for which n is
responsible.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#range(rice.p2p.commonapi.NodeHandle, int, rice.p2p.commonapi.Id)">range</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>n</CODE> - nodeHandle of the node whose range is being queried<DD><CODE>r</CODE> - the rank<DD><CODE>key</CODE> - the key
<DT><B>Returns:</B><DD>the range of keys, or null if range could not be determined for the given node and rank</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>Returns a handle to the local node below this endpoint.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#getLocalNodeHandle()">getLocalNodeHandle</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>A NodeHandle referring to the local node.</DL>
</DD>
</DL>
<HR>
<A NAME="messageForAppl(rice.pastry.messaging.Message)"><!-- --></A><H3>
messageForAppl</H3>
<PRE>
public final void <B>messageForAppl</B>(<A HREF="../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#messageForAppl(rice.pastry.messaging.Message)">PastryAppl</A></CODE></B></DD>
<DD>Called by pastry when a message arrives for this application.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#messageForAppl(rice.pastry.messaging.Message)">messageForAppl</A></CODE> in class <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>msg</CODE> - the message that is arriving.</DL>
</DD>
</DL>
<HR>
<A NAME="enrouteMessage(rice.pastry.messaging.Message, rice.pastry.Id, rice.pastry.NodeHandle, rice.pastry.routing.SendOptions)"><!-- --></A><H3>
enrouteMessage</H3>
<PRE>
public final boolean <B>enrouteMessage</B>(<A HREF="../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg,
<A HREF="../../../rice/pastry/Id.html" title="class in rice.pastry">Id</A>&nbsp;key,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;nextHop,
<A HREF="../../../rice/pastry/routing/SendOptions.html" title="class in rice.pastry.routing">SendOptions</A>&nbsp;opt)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#enrouteMessage(rice.pastry.messaging.Message, rice.pastry.Id, rice.pastry.NodeHandle, rice.pastry.routing.SendOptions)">PastryAppl</A></CODE></B></DD>
<DD>Called by pastry when a message is enroute and is passing through this node. If this
method is not overridden, the default behaviour is to let the message pass through.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#enrouteMessage(rice.pastry.messaging.Message, rice.pastry.Id, rice.pastry.NodeHandle, rice.pastry.routing.SendOptions)">enrouteMessage</A></CODE> in class <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>msg</CODE> - the message that is passing through.<DD><CODE>key</CODE> - the key<DD><CODE>nextHop</CODE> - the default next hop for the message.<DD><CODE>opt</CODE> - the send options the message was sent with.
<DT><B>Returns:</B><DD>true if the message should be routed, false if the message should be cancelled.</DL>
</DD>
</DL>
<HR>
<A NAME="leafSetChange(rice.pastry.NodeHandle, boolean)"><!-- --></A><H3>
leafSetChange</H3>
<PRE>
public void <B>leafSetChange</B>(<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;nh,
boolean&nbsp;wasAdded)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#leafSetChange(rice.pastry.NodeHandle, boolean)">PastryAppl</A></CODE></B></DD>
<DD>Called by pastry when the leaf set changes.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#leafSetChange(rice.pastry.NodeHandle, boolean)">leafSetChange</A></CODE> in class <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>nh</CODE> - the handle of the node that was added or removed.<DD><CODE>wasAdded</CODE> - true if the node was added, false if the node was removed.</DL>
</DD>
</DL>
<HR>
<A NAME="receiveMessage(rice.pastry.messaging.Message)"><!-- --></A><H3>
receiveMessage</H3>
<PRE>
public void <B>receiveMessage</B>(<A HREF="../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg)</PRE>
<DL>
<DD>Called by pastry to deliver a message to this client. Not to be overridden.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#receiveMessage(rice.pastry.messaging.Message)">receiveMessage</A></CODE> in class <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>msg</CODE> - the message that is arriving.</DL>
</DD>
</DL>
<HR>
<A NAME="process(rice.Executable, rice.Continuation)"><!-- --></A><H3>
process</H3>
<PRE>
public void <B>process</B>(<A HREF="../../../rice/Executable.html" title="interface in rice">Executable</A>&nbsp;task,
<A HREF="../../../rice/Continuation.html" title="interface in rice">Continuation</A>&nbsp;command)</PRE>
<DL>
<DD>Schedules a job for processing on the dedicated processing thread. CPU intensive jobs, such
as encryption, erasure encoding, or bloom filter creation should never be done in the context
of the underlying node's thread, and should only be done via this method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#process(rice.Executable, rice.Continuation)">process</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>task</CODE> - The task to run on the processing thread<DD><CODE>command</CODE> - The command to return the result to once it's done</DL>
</DD>
</DL>
<HR>
<A NAME="getInstance()"><!-- --></A><H3>
getInstance</H3>
<PRE>
public java.lang.String <B>getInstance</B>()</PRE>
<DL>
<DD>Returns a unique instance name of this endpoint, sort of a mailbox name for this
application.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#getInstance()">getInstance</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The unique instance name of this application</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><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#getEnvironment()">Endpoint</A></CODE></B></DD>
<DD>Returns the environment. This allows the nodes to be virtualized within the JVM
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#getEnvironment()">getEnvironment</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>the environment for this node/app.</DL>
</DD>
</DL>
<HR>
<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="setDeserializer(rice.p2p.commonapi.rawserialization.MessageDeserializer)"><!-- --></A><H3>
setDeserializer</H3>
<PRE>
public void <B>setDeserializer</B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/MessageDeserializer.html" title="interface in rice.p2p.commonapi.rawserialization">MessageDeserializer</A>&nbsp;md)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#setDeserializer(rice.p2p.commonapi.rawserialization.MessageDeserializer)">Endpoint</A></CODE></B></DD>
<DD>To use a more efficient serialization format than Java Serialization
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#setDeserializer(rice.p2p.commonapi.rawserialization.MessageDeserializer)">setDeserializer</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#setDeserializer(rice.p2p.commonapi.rawserialization.MessageDeserializer)">setDeserializer</A></CODE> in class <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getDeserializer()"><!-- --></A><H3>
getDeserializer</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/rawserialization/MessageDeserializer.html" title="interface in rice.p2p.commonapi.rawserialization">MessageDeserializer</A> <B>getDeserializer</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#getDeserializer()">Endpoint</A></CODE></B></DD>
<DD>Returns the deserializer. The default deserializer can deserialize rice.p2p.util.JavaSerializedMessage
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#getDeserializer()">getDeserializer</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#getDeserializer()">getDeserializer</A></CODE> in class <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>
<A NAME="readId(rice.p2p.commonapi.rawserialization.InputBuffer, short)"><!-- --></A><H3>
readId</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> <B>readId</B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/InputBuffer.html" title="interface in rice.p2p.commonapi.rawserialization">InputBuffer</A>&nbsp;buf,
short&nbsp;type)
throws java.io.IOException</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#readId(rice.p2p.commonapi.rawserialization.InputBuffer, short)">Endpoint</A></CODE></B></DD>
<DD>To use a more efficient serialization format than Java Serialization
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#readId(rice.p2p.commonapi.rawserialization.InputBuffer, short)">readId</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>
<A NAME="readNodeHandle(rice.p2p.commonapi.rawserialization.InputBuffer)"><!-- --></A><H3>
readNodeHandle</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A> <B>readNodeHandle</B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/InputBuffer.html" title="interface in rice.p2p.commonapi.rawserialization">InputBuffer</A>&nbsp;buf)
throws java.io.IOException</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/rawserialization/NodeHandleReader.html#readNodeHandle(rice.p2p.commonapi.rawserialization.InputBuffer)">NodeHandleReader</A></CODE></B></DD>
<DD>To use Raw Serialization
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#readNodeHandle(rice.p2p.commonapi.rawserialization.InputBuffer)">readNodeHandle</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/rawserialization/NodeHandleReader.html#readNodeHandle(rice.p2p.commonapi.rawserialization.InputBuffer)">readNodeHandle</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/rawserialization/NodeHandleReader.html" title="interface in rice.p2p.commonapi.rawserialization">NodeHandleReader</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>
<A NAME="readIdRange(rice.p2p.commonapi.rawserialization.InputBuffer)"><!-- --></A><H3>
readIdRange</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/IdRange.html" title="interface in rice.p2p.commonapi">IdRange</A> <B>readIdRange</B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/InputBuffer.html" title="interface in rice.p2p.commonapi.rawserialization">InputBuffer</A>&nbsp;buf)
throws java.io.IOException</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#readIdRange(rice.p2p.commonapi.rawserialization.InputBuffer)">Endpoint</A></CODE></B></DD>
<DD>To use Raw Serialization
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#readIdRange(rice.p2p.commonapi.rawserialization.InputBuffer)">readIdRange</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>
<A NAME="coalesce(rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
coalesce</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A> <B>coalesce</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;newHandle)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/rawserialization/NodeHandleReader.html#coalesce(rice.p2p.commonapi.NodeHandle)">coalesce</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/rawserialization/NodeHandleReader.html" title="interface in rice.p2p.commonapi.rawserialization">NodeHandleReader</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="readNodeHandleSet(rice.p2p.commonapi.rawserialization.InputBuffer, short)"><!-- --></A><H3>
readNodeHandleSet</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandleSet.html" title="interface in rice.p2p.commonapi">NodeHandleSet</A> <B>readNodeHandleSet</B>(<A HREF="../../../rice/p2p/commonapi/rawserialization/InputBuffer.html" title="interface in rice.p2p.commonapi.rawserialization">InputBuffer</A>&nbsp;buf,
short&nbsp;type)
throws java.io.IOException</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#readNodeHandleSet(rice.p2p.commonapi.rawserialization.InputBuffer, short)">readNodeHandleSet</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>
<A NAME="networkNeighbors(int)"><!-- --></A><H3>
networkNeighbors</H3>
<PRE>
public java.util.List&lt;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&gt; <B>networkNeighbors</B>(int&nbsp;num)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#networkNeighbors(int)">Endpoint</A></CODE></B></DD>
<DD>Returns an ordered list of the nearest known neighbors.
Note that proximity is usually an estimate, and can quickly become stale.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#networkNeighbors(int)">networkNeighbors</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>List of NodeHandle</DL>
</DD>
</DL>
<HR>
<A NAME="destroy()"><!-- --></A><H3>
destroy</H3>
<PRE>
public void <B>destroy</B>()</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#destroy()">PastryAppl</A></CODE></B></DD>
<DD>Called when PastryNode is destroyed. Can be overloaded by applications.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#destroy()">destroy</A></CODE> in class <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="proximity(rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
proximity</H3>
<PRE>
public int <B>proximity</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;nh)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#proximity(rice.p2p.commonapi.NodeHandle)">Endpoint</A></CODE></B></DD>
<DD>This replaces NodeHandle.proximity(), so that you don't have to have a "coalesced" NodeHandle.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#proximity(rice.p2p.commonapi.NodeHandle)">proximity</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>
<A NAME="isAlive(rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
isAlive</H3>
<PRE>
public boolean <B>isAlive</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;nh)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#isAlive(rice.p2p.commonapi.NodeHandle)">isAlive</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getAppId()"><!-- --></A><H3>
getAppId</H3>
<PRE>
public int <B>getAppId</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="setConsistentRouting(boolean)"><!-- --></A><H3>
setConsistentRouting</H3>
<PRE>
public void <B>setConsistentRouting</B>(boolean&nbsp;val)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#setConsistentRouting(boolean)">Endpoint</A></CODE></B></DD>
<DD>default value is true
Consistent routing causes RouteMessages to be dropped if we are not sure that we are
responsible for our current id range. If you set this to false, you will be delivered
messages to forward() and deliver() even if there is possible inconsistent routing.
(The overlay still does it's best to deliver the RouteMessage to the proper key,
but some protocols can guarantee consistency, for example by using leases between
nodes)
Note that when true, the overlay never purposely drops messages routed with a null
key:
endpoint.deliver(null, msg, targetNodeHandle) // will be delivered regardless of consistency
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#setConsistentRouting(boolean)">setConsistentRouting</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="deliverWhenNotReady()"><!-- --></A><H3>
deliverWhenNotReady</H3>
<PRE>
public boolean <B>deliverWhenNotReady</B>()</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#deliverWhenNotReady()">PastryAppl</A></CODE></B></DD>
<DD>Instructs the MessageDispatch how to behave when the PastryNode is not ready.
An application can override this method to return true if it wishes to receive
messages before Pastry is ready().
Most applications should leave this as false, so that their application does
not have inconsistent routing. However Pastry's protocols (such as the join protocol)
need to receive messages before pastry is ready(). This is because they are attempting
to make pastry ready().
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../rice/pastry/client/PastryAppl.html#deliverWhenNotReady()">deliverWhenNotReady</A></CODE> in class <CODE><A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>false unless the node is a service</DL>
</DD>
</DL>
<HR>
<A NAME="routingConsistentFor(rice.p2p.commonapi.Id)"><!-- --></A><H3>
routingConsistentFor</H3>
<PRE>
public boolean <B>routingConsistentFor</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#routingConsistentFor(rice.p2p.commonapi.Id)">Endpoint</A></CODE></B></DD>
<DD>Can we guarantee that this id is currently ours, and routing will be consistent?
Note that this has some real timing implications, so don't cache the returned value.
Note that it will always return always returns false if you are not the root of the id.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#routingConsistentFor(rice.p2p.commonapi.Id)">routingConsistentFor</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>true if routing consistency can currently be guaranteed for this</DL>
</DD>
</DL>
<HR>
<A NAME="setSendOptions(java.util.Map)"><!-- --></A><H3>
setSendOptions</H3>
<PRE>
public void <B>setSendOptions</B>(java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#setSendOptions(java.util.Map)">Endpoint</A></CODE></B></DD>
<DD>Uses these options as defaults.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html#setSendOptions(java.util.Map)">setSendOptions</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</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/PastryEndpoint.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;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../rice/pastry/commonapi/PastryEndpointMessage.html" title="class in rice.pastry.commonapi"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/pastry/commonapi/PastryEndpoint.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="PastryEndpoint.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;NESTED&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>