FreePastry/docs/javadoc/rice/pastry/standard/StandardLeafSetProtocol.html

632 lines
30 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:01:37 CET 2009 -->
<TITLE>
StandardLeafSetProtocol (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="StandardLeafSetProtocol (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/StandardLeafSetProtocol.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/pastry/standard/StandardJoinProtocol.SJPDeserializer.html" title="class in rice.pastry.standard"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/pastry/standard/StandardRouter.html" title="class in rice.pastry.standard"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/pastry/standard/StandardLeafSetProtocol.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="StandardLeafSetProtocol.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.standard</FONT>
<BR>
Class StandardLeafSetProtocol</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.standard.StandardLeafSetProtocol</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>java.util.Observer, <A HREF="../../../rice/pastry/leafset/LeafSetProtocol.html" title="interface in rice.pastry.leafset">LeafSetProtocol</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>StandardLeafSetProtocol</B><DT>extends <A HREF="../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A><DT>implements <A HREF="../../../rice/pastry/leafset/LeafSetProtocol.html" title="interface in rice.pastry.leafset">LeafSetProtocol</A>, java.util.Observer</DL>
</PRE>
<P>
An implementation of a simple leaf set protocol.
<P>
<P>
<DL>
<DT><B>Version:</B></DT>
<DD>$Id: StandardLeafSetProtocol.java 4654 2009-01-08 16:33:07Z jeffh $</DD>
<DT><B>Author:</B></DT>
<DD>Peter Druschel, Andrew Ladd</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;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/standard/StandardLeafSetProtocol.html#failstop">failstop</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/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/standard/StandardLeafSetProtocol.html#leafSet">leafSet</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/pastry/standard/StandardLeafSetProtocol.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>protected &nbsp;<A HREF="../../../rice/pastry/routing/RoutingTable.html" title="class in rice.pastry.routing">RoutingTable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/standard/StandardLeafSetProtocol.html#routeTable">routeTable</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#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/standard/StandardLeafSetProtocol.html#StandardLeafSetProtocol(rice.pastry.PastryNode, rice.pastry.NodeHandle, rice.pastry.leafset.LeafSet, rice.pastry.routing.RoutingTable)">StandardLeafSetProtocol</A></B>(<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;ln,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;local,
<A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A>&nbsp;ls,
<A HREF="../../../rice/pastry/routing/RoutingTable.html" title="class in rice.pastry.routing">RoutingTable</A>&nbsp;rt)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/standard/StandardLeafSetProtocol.html#broadcast()">broadcast</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Broadcast the leaf set to all members of the local leaf set.</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/pastry/standard/StandardLeafSetProtocol.html#broadcast(int)">broadcast</A></B>(int&nbsp;type)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Broadcast the leaf set to all members of the local leaf set.</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/pastry/standard/StandardLeafSetProtocol.html#broadcast(rice.pastry.leafset.LeafSet, rice.pastry.NodeHandle)">broadcast</A></B>(<A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A>&nbsp;ls,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;from)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Broadcast the local leaf set to all members of the given leaf set, plus the
node from which the leaf set was received.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/standard/StandardLeafSetProtocol.html#checkLeafSet(rice.pastry.leafset.LeafSet, rice.pastry.NodeHandle, boolean)">checkLeafSet</A></B>(<A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A>&nbsp;remotels,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;from,
boolean&nbsp;notifyMissing)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks a received leafset advertisement for missing nodes</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/standard/StandardLeafSetProtocol.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/standard/StandardLeafSetProtocol.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;We manage the leafset now.</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/standard/StandardLeafSetProtocol.html#maintainLeafSet()">maintainLeafSet</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maintain the leaf set.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/standard/StandardLeafSetProtocol.html#mergeLeafSet(rice.pastry.leafset.LeafSet, rice.pastry.NodeHandle)">mergeLeafSet</A></B>(<A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A>&nbsp;remotels,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;from)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Merge a remote leafset into our own</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/standard/StandardLeafSetProtocol.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;Receives messages.</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/standard/StandardLeafSetProtocol.html#update(java.util.Observable, java.lang.Object)">update</A></B>(java.util.Observable&nbsp;o,
java.lang.Object&nbsp;arg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If nodehandle is dead, remove it from the leafset.</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#destroy()">destroy</A>, <A HREF="../../../rice/pastry/client/PastryAppl.html#enrouteMessage(rice.pastry.messaging.Message, rice.pastry.Id, rice.pastry.NodeHandle, rice.pastry.routing.SendOptions)">enrouteMessage</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#getDeserializer()">getDeserializer</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#receiveMessage(rice.pastry.messaging.Message)">receiveMessage</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>, <A HREF="../../../rice/pastry/client/PastryAppl.html#setDeserializer(rice.p2p.commonapi.rawserialization.MessageDeserializer)">setDeserializer</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, toString, 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="failstop"><!-- --></A><H3>
failstop</H3>
<PRE>
protected final boolean <B>failstop</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#rice.pastry.standard.StandardLeafSetProtocol.failstop">Constant Field Values</A></DL>
</DL>
<HR>
<A NAME="leafSet"><!-- --></A><H3>
leafSet</H3>
<PRE>
protected <A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A> <B>leafSet</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="routeTable"><!-- --></A><H3>
routeTable</H3>
<PRE>
protected <A HREF="../../../rice/pastry/routing/RoutingTable.html" title="class in rice.pastry.routing">RoutingTable</A> <B>routeTable</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>
<!-- ========= 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="StandardLeafSetProtocol(rice.pastry.PastryNode, rice.pastry.NodeHandle, rice.pastry.leafset.LeafSet, rice.pastry.routing.RoutingTable)"><!-- --></A><H3>
StandardLeafSetProtocol</H3>
<PRE>
public <B>StandardLeafSetProtocol</B>(<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;ln,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;local,
<A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A>&nbsp;ls,
<A HREF="../../../rice/pastry/routing/RoutingTable.html" title="class in rice.pastry.routing">RoutingTable</A>&nbsp;rt)</PRE>
<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="messageForAppl(rice.pastry.messaging.Message)"><!-- --></A><H3>
messageForAppl</H3>
<PRE>
public void <B>messageForAppl</B>(<A HREF="../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg)</PRE>
<DL>
<DD>Receives messages.
<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.</DL>
</DD>
</DL>
<HR>
<A NAME="checkLeafSet(rice.pastry.leafset.LeafSet, rice.pastry.NodeHandle, boolean)"><!-- --></A><H3>
checkLeafSet</H3>
<PRE>
protected boolean <B>checkLeafSet</B>(<A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A>&nbsp;remotels,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;from,
boolean&nbsp;notifyMissing)</PRE>
<DL>
<DD>Checks a received leafset advertisement for missing nodes
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>remotels</CODE> - the remote leafset<DD><CODE>from</CODE> - the node from which we received the leafset<DD><CODE>notifyMissing</CODE> - if true, notify missing nodes
<DT><B>Returns:</B><DD>true if any nodes where found missing in the received leafset</DL>
</DD>
</DL>
<HR>
<A NAME="mergeLeafSet(rice.pastry.leafset.LeafSet, rice.pastry.NodeHandle)"><!-- --></A><H3>
mergeLeafSet</H3>
<PRE>
protected boolean <B>mergeLeafSet</B>(<A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A>&nbsp;remotels,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;from)</PRE>
<DL>
<DD>Merge a remote leafset into our own
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>remotels</CODE> - the remote leafset<DD><CODE>from</CODE> - the node from which we received the leafset
<DT><B>Returns:</B><DD>true if the leafset changed</DL>
</DD>
</DL>
<HR>
<A NAME="broadcast()"><!-- --></A><H3>
broadcast</H3>
<PRE>
protected void <B>broadcast</B>()</PRE>
<DL>
<DD>Broadcast the leaf set to all members of the local leaf set.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="broadcast(int)"><!-- --></A><H3>
broadcast</H3>
<PRE>
protected void <B>broadcast</B>(int&nbsp;type)</PRE>
<DL>
<DD>Broadcast the leaf set to all members of the local leaf set.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - the type of broadcast message used</DL>
</DD>
</DL>
<HR>
<A NAME="broadcast(rice.pastry.leafset.LeafSet, rice.pastry.NodeHandle)"><!-- --></A><H3>
broadcast</H3>
<PRE>
protected void <B>broadcast</B>(<A HREF="../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A>&nbsp;ls,
<A HREF="../../../rice/pastry/NodeHandle.html" title="class in rice.pastry">NodeHandle</A>&nbsp;from)</PRE>
<DL>
<DD>Broadcast the local leaf set to all members of the given leaf set, plus the
node from which the leaf set was received.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>ls</CODE> - the leafset whose members we send to local leaf set<DD><CODE>from</CODE> - the node from which ls was received</DL>
</DD>
</DL>
<HR>
<A NAME="maintainLeafSet()"><!-- --></A><H3>
maintainLeafSet</H3>
<PRE>
public void <B>maintainLeafSet</B>()</PRE>
<DL>
<DD>Maintain the leaf set. This method checks for dead leafset entries and
replaces them as needed. It is assumed that this method be invoked
periodically.
<P>
<DD><DL>
</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="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>We manage the leafset now. Implementation is simple, remove items that die.
We should be observers on everything in the leafset, and nothing else.
<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="update(java.util.Observable, java.lang.Object)"><!-- --></A><H3>
update</H3>
<PRE>
public void <B>update</B>(java.util.Observable&nbsp;o,
java.lang.Object&nbsp;arg)</PRE>
<DL>
<DD>If nodehandle is dead, remove it from the leafset.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>update</CODE> in interface <CODE>java.util.Observer</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/StandardLeafSetProtocol.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/pastry/standard/StandardJoinProtocol.SJPDeserializer.html" title="class in rice.pastry.standard"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/pastry/standard/StandardRouter.html" title="class in rice.pastry.standard"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/pastry/standard/StandardLeafSetProtocol.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="StandardLeafSetProtocol.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>