FreePastry/docs/javadoc/rice/p2p/multiring/MultiringNode.html

933 lines
41 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:17 CET 2009 -->
<TITLE>
MultiringNode (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="MultiringNode (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/MultiringNode.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
Rice Pastry API</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../rice/p2p/multiring/MultiringIdSet.html" title="class in rice.p2p.multiring"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/multiring/MultiringNodeCollection.html" title="class in rice.p2p.multiring"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/p2p/multiring/MultiringNode.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="MultiringNode.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.p2p.multiring</FONT>
<BR>
Class MultiringNode</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>rice.p2p.multiring.MultiringNode</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>, <A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>MultiringNode</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>, <A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></DL>
</PRE>
<P>
<DL>
<DT><B>Version:</B></DT>
<DD>$Id: MultiringNode.java 4654 2009-01-08 16:33:07Z jeffh $</DD>
<DT><B>Author:</B></DT>
<DD>Alan Mislove</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/multiring/MultiringNodeCollection.html" title="class in rice.p2p.multiring">MultiringNodeCollection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#collection">collection</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The collection, which keeps track of the other nodes on the ring node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Hashtable&lt;java.lang.String,<A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#endpoints">endpoints</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The list of all of the endpoints connected to this node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#environment">environment</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The environment</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/multiring/MultiringIdFactory.html" title="class in rice.p2p.multiring">MultiringIdFactory</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#factory">factory</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A cached IdFactory for internal use</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/environment/logging/Logger.html" title="class in rice.environment.logging">Logger</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.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/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#node">node</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The node which this multiring node is wrapping</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#ringId">ringId</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Id which represents the current ring this node is a member of</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/scribe/Scribe.html" title="interface in rice.p2p.scribe">Scribe</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#scribe">scribe</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Scribe application which the node uses to do routing</TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#MultiringNode(rice.p2p.commonapi.Id, rice.p2p.commonapi.Node)">MultiringNode</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;ringId,
<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node)</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/p2p/multiring/MultiringNode.html#MultiringNode(rice.p2p.commonapi.Id, rice.p2p.commonapi.Node, rice.p2p.multiring.MultiringNode)">MultiringNode</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;ringId,
<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/p2p/multiring/MultiringNode.html" title="class in rice.p2p.multiring">MultiringNode</A>&nbsp;existing)</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;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">anycast</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked when an anycast is received for a topic
which this client is interested in.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#buildEndpoint(rice.p2p.commonapi.Application, java.lang.String)">buildEndpoint</A></B>(<A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>&nbsp;application,
java.lang.String&nbsp;instance)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Same as register application, but returns an unregistered Endpoint.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#childAdded(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">childAdded</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Informs this client that a child was added to a topic in
which it was interested in.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#childRemoved(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">childRemoved</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Informs this client that a child was removed from a topic in
which it was interested in.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#deliver(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">deliver</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked when a message is delivered for a topic this
client is interested in.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/multiring/MultiringNodeCollection.html" title="class in rice.p2p.multiring">MultiringNodeCollection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#getCollection()">getCollection</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the collection this node is a member of</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#getEnvironment()">getEnvironment</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getter for 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/p2p/multiring/MultiringNode.html#getId()">getId</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Id of this node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/IdFactory.html" title="interface in rice.p2p.commonapi">IdFactory</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#getIdFactory()">getIdFactory</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a factory for Ids specific to this node's protocol.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#getLocalNodeHandle()">getLocalNodeHandle</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a handle to the local node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#getNode()">getNode</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this mutliring node's internal node</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/p2p/multiring/MultiringNode.html#getNodeId()">getNodeId</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the underlying id of this node</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/p2p/multiring/MultiringNode.html#getRingId()">getRingId</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the ringId of this node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#nodeAdded(rice.p2p.commonapi.Id)">nodeAdded</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;otherRingId)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method which is used to inform the node that another node has been added to
the collection.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#printRouteState()">printRouteState</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For debugging: print the internal routing state of the Node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#registerApplication(rice.p2p.commonapi.Application, java.lang.String)">registerApplication</A></B>(<A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>&nbsp;application,
java.lang.String&nbsp;instance)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use buildEndpoint() endpoint.register()</I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#subscribeFailed(rice.p2p.scribe.Topic)">subscribeFailed</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Informs the client that a subscribe on the given topic failed
- the client should retry the subscribe or take appropriate
action.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/multiring/MultiringNode.html#toString()">toString</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prints out the string</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ FIELD DETAIL =========== -->
<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="node"><!-- --></A><H3>
node</H3>
<PRE>
protected <A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A> <B>node</B></PRE>
<DL>
<DD>The node which this multiring node is wrapping
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="ringId"><!-- --></A><H3>
ringId</H3>
<PRE>
protected <A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> <B>ringId</B></PRE>
<DL>
<DD>The Id which represents the current ring this node is a member of
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="scribe"><!-- --></A><H3>
scribe</H3>
<PRE>
protected <A HREF="../../../rice/p2p/scribe/Scribe.html" title="interface in rice.p2p.scribe">Scribe</A> <B>scribe</B></PRE>
<DL>
<DD>The Scribe application which the node uses to do routing
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="collection"><!-- --></A><H3>
collection</H3>
<PRE>
protected <A HREF="../../../rice/p2p/multiring/MultiringNodeCollection.html" title="class in rice.p2p.multiring">MultiringNodeCollection</A> <B>collection</B></PRE>
<DL>
<DD>The collection, which keeps track of the other nodes on the ring node
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="endpoints"><!-- --></A><H3>
endpoints</H3>
<PRE>
protected java.util.Hashtable&lt;java.lang.String,<A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A>&gt; <B>endpoints</B></PRE>
<DL>
<DD>The list of all of the endpoints connected to this node
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="factory"><!-- --></A><H3>
factory</H3>
<PRE>
protected <A HREF="../../../rice/p2p/multiring/MultiringIdFactory.html" title="class in rice.p2p.multiring">MultiringIdFactory</A> <B>factory</B></PRE>
<DL>
<DD>A cached IdFactory for internal use
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="environment"><!-- --></A><H3>
environment</H3>
<PRE>
protected <A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A> <B>environment</B></PRE>
<DL>
<DD>The environment
<P>
<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="MultiringNode(rice.p2p.commonapi.Id, rice.p2p.commonapi.Node)"><!-- --></A><H3>
MultiringNode</H3>
<PRE>
public <B>MultiringNode</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;ringId,
<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node)</PRE>
<DL>
<DD>Constructor
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node which this multiring node is wrapping<DD><CODE>ringId</CODE> - The Id of this node's ring</DL>
</DL>
<HR>
<A NAME="MultiringNode(rice.p2p.commonapi.Id, rice.p2p.commonapi.Node, rice.p2p.multiring.MultiringNode)"><!-- --></A><H3>
MultiringNode</H3>
<PRE>
public <B>MultiringNode</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;ringId,
<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/p2p/multiring/MultiringNode.html" title="class in rice.p2p.multiring">MultiringNode</A>&nbsp;existing)</PRE>
<DL>
<DD>Constructor
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node which this multiring node is wrapping<DD><CODE>ringId</CODE> - The Id of this node's ring<DD><CODE>existing</CODE> - An existing node which this node should pair with</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="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><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Node.html#getLocalNodeHandle()">Node</A></CODE></B></DD>
<DD>Returns a handle to the local node. This node handle is serializable, and
can therefore be sent to other nodes in the network and still be valid.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Node.html#getLocalNodeHandle()">getLocalNodeHandle</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>A NodeHandle referring to the local node.</DL>
</DD>
</DL>
<HR>
<A NAME="registerApplication(rice.p2p.commonapi.Application, java.lang.String)"><!-- --></A><H3>
registerApplication</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A> <B>registerApplication</B>(<A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>&nbsp;application,
java.lang.String&nbsp;instance)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>use buildEndpoint() endpoint.register()</I>
<P>
<DD>This returns a VirtualizedNode specific to the given application and
instance name to the application, which the application can then use
in order to send an receive messages.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Node.html#registerApplication(rice.p2p.commonapi.Application, java.lang.String)">registerApplication</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>application</CODE> - The Application<DD><CODE>instance</CODE> - An identifier for a given instance
<DT><B>Returns:</B><DD>The endpoint specific to this applicationk, which can be used
for message sending/receiving.</DL>
</DD>
</DL>
<HR>
<A NAME="buildEndpoint(rice.p2p.commonapi.Application, java.lang.String)"><!-- --></A><H3>
buildEndpoint</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A> <B>buildEndpoint</B>(<A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>&nbsp;application,
java.lang.String&nbsp;instance)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Node.html#buildEndpoint(rice.p2p.commonapi.Application, java.lang.String)">Node</A></CODE></B></DD>
<DD>Same as register application, but returns an unregistered Endpoint. This allows
the application to finish initialization that may require the endpoint
before it receives messages from the network and notification of changes.
When then application is ready, it must call endpoint.register() to receive messages.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Node.html#buildEndpoint(rice.p2p.commonapi.Application, java.lang.String)">buildEndpoint</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>
<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 the Id of this node
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Node.html#getId()">getId</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>This node's Id</DL>
</DD>
</DL>
<HR>
<A NAME="getRingId()"><!-- --></A><H3>
getRingId</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> <B>getRingId</B>()</PRE>
<DL>
<DD>Returns the ringId of this node
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>This node's ringId</DL>
</DD>
</DL>
<HR>
<A NAME="getNodeId()"><!-- --></A><H3>
getNodeId</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> <B>getNodeId</B>()</PRE>
<DL>
<DD>Returns the underlying id of this node
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>This node's Id</DL>
</DD>
</DL>
<HR>
<A NAME="getNode()"><!-- --></A><H3>
getNode</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A> <B>getNode</B>()</PRE>
<DL>
<DD>Returns this mutliring node's internal node
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The wrapped node</DL>
</DD>
</DL>
<HR>
<A NAME="getCollection()"><!-- --></A><H3>
getCollection</H3>
<PRE>
public <A HREF="../../../rice/p2p/multiring/MultiringNodeCollection.html" title="class in rice.p2p.multiring">MultiringNodeCollection</A> <B>getCollection</B>()</PRE>
<DL>
<DD>Returns the collection this node is a member of
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>This node's collection</DL>
</DD>
</DL>
<HR>
<A NAME="getIdFactory()"><!-- --></A><H3>
getIdFactory</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/IdFactory.html" title="interface in rice.p2p.commonapi">IdFactory</A> <B>getIdFactory</B>()</PRE>
<DL>
<DD>Returns a factory for Ids specific to this node's protocol.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Node.html#getIdFactory()">getIdFactory</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>A factory for creating Ids.</DL>
</DD>
</DL>
<HR>
<A NAME="nodeAdded(rice.p2p.commonapi.Id)"><!-- --></A><H3>
nodeAdded</H3>
<PRE>
protected void <B>nodeAdded</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;otherRingId)</PRE>
<DL>
<DD>Method which is used to inform the node that another node has been added to
the collection. This node then joins the appropriate Scribe group to advertise
this it can route directly to that node's ring.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The Id of the newly added ring</DL>
</DD>
</DL>
<HR>
<A NAME="anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
anycast</H3>
<PRE>
public boolean <B>anycast</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD>This method is invoked when an anycast is received for a topic
which this client is interested in. The client should return
whether or not the anycast should continue.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">anycast</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic the message was anycasted to<DD><CODE>content</CODE> - The content which was anycasted
<DT><B>Returns:</B><DD>Whether or not the anycast should continue</DL>
</DD>
</DL>
<HR>
<A NAME="deliver(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
deliver</H3>
<PRE>
public void <B>deliver</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD>This method is invoked when a message is delivered for a topic this
client is interested in.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#deliver(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">deliver</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic the message was published to<DD><CODE>content</CODE> - The content which was published</DL>
</DD>
</DL>
<HR>
<A NAME="childAdded(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
childAdded</H3>
<PRE>
public void <B>childAdded</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</PRE>
<DL>
<DD>Informs this client that a child was added to a topic in
which it was interested in.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#childAdded(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">childAdded</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to unsubscribe from<DD><CODE>child</CODE> - The child that was added</DL>
</DD>
</DL>
<HR>
<A NAME="childRemoved(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
childRemoved</H3>
<PRE>
public void <B>childRemoved</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</PRE>
<DL>
<DD>Informs this client that a child was removed from a topic in
which it was interested in.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#childRemoved(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">childRemoved</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to unsubscribe from<DD><CODE>child</CODE> - The child that was removed</DL>
</DD>
</DL>
<HR>
<A NAME="subscribeFailed(rice.p2p.scribe.Topic)"><!-- --></A><H3>
subscribeFailed</H3>
<PRE>
public void <B>subscribeFailed</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD>Informs the client that a subscribe on the given topic failed
- the client should retry the subscribe or take appropriate
action.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#subscribeFailed(rice.p2p.scribe.Topic)">subscribeFailed</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic which the subscribe failed on</DL>
</DD>
</DL>
<HR>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
public java.lang.String <B>toString</B>()</PRE>
<DL>
<DD>Prints out the string
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>A string</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>Getter for the environment.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Node.html#getEnvironment()">getEnvironment</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>the environment</DL>
</DD>
</DL>
<HR>
<A NAME="printRouteState()"><!-- --></A><H3>
printRouteState</H3>
<PRE>
public java.lang.String <B>printRouteState</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/commonapi/Node.html#printRouteState()">Node</A></CODE></B></DD>
<DD>For debugging: print the internal routing state of the Node.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Node.html#printRouteState()">printRouteState</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD></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/MultiringNode.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
Rice Pastry API</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../rice/p2p/multiring/MultiringIdSet.html" title="class in rice.p2p.multiring"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/multiring/MultiringNodeCollection.html" title="class in rice.p2p.multiring"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/p2p/multiring/MultiringNode.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="MultiringNode.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>