FreePastry/docs/javadoc/rice/p2p/scribe/ScribeImpl.html

2507 lines
136 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:07 CET 2009 -->
<TITLE>
ScribeImpl (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="ScribeImpl (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/ScribeImpl.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/scribe/ScribeContent.html" title="interface in rice.p2p.scribe"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/scribe/ScribeImpl.ScribeClientConverter.html" title="class in rice.p2p.scribe"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/p2p/scribe/ScribeImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ScribeImpl.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
rice.p2p.scribe</FONT>
<BR>
Class ScribeImpl</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>rice.p2p.scribe.ScribeImpl</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>java.util.Observer, <A HREF="../../../rice/Destructable.html" title="interface in rice">Destructable</A>, <A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>, <A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A>, <A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A>, <A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>, <A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A>, <A HREF="../../../rice/p2p/scribe/Scribe.html" title="interface in rice.p2p.scribe">Scribe</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>ScribeImpl</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../rice/p2p/scribe/Scribe.html" title="interface in rice.p2p.scribe">Scribe</A>, <A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>, <A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A>, java.util.Observer</DL>
</PRE>
<P>
<DL>
<DT><B>Version:</B></DT>
<DD>$Id: ScribeImpl.java 4495 2008-09-26 14:48:02Z jeffh $</DD>
<DT><B>Author:</B></DT>
<DD>Alan Mislove</DD>
</DL>
<HR>
<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->
<A NAME="nested_class_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Nested Class Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.ScribeClientConverter.html" title="class in rice.p2p.scribe">ScribeImpl.ScribeClientConverter</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adapts an old ScribeClient to a new ScribeMultiClient
This is for reverse compatibility.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.TopicManager.html" title="class in rice.p2p.scribe">ScribeImpl.TopicManager</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class which keeps track of a given topic</TD>
</TR>
</TABLE>
&nbsp;<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.HashMap&lt;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>,java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#allChildren">allChildren</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This contains a mapping of child - > all topics for which the local node
has this node(hashtable key) as a child</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.HashMap&lt;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>,java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#allParents">allParents</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This contains a mapping of parent - > all topics for which the local node
has this node(hashtable key) as a parent</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#endpoint">endpoint</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this application's endpoint</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#INFO_2">INFO_2</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/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#localHandle">localHandle</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the local node handle</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#MAINTENANCE_INTERVAL">MAINTENANCE_INTERVAL</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The interval with which to perform maintenance</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#MESSAGE_TIMEOUT">MESSAGE_TIMEOUT</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the timeout for a subscribe message</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/scribe/ScribeImpl.html#node">node</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;java.util.Set&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#pending">pending</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Topics that (should) have an outsanding subscription.</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/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#policy">policy</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this scribe's policy</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Set&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#roots">roots</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Topics that we are the root.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Hashtable&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>,<A HREF="../../../rice/p2p/scribe/ScribeImpl.TopicManager.html" title="class in rice.p2p.scribe">ScribeImpl.TopicManager</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#topicManagers">topicManagers</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the hashtable of topic -> TopicManager</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_rice.p2p.scribe.maintenance.MaintainableScribe"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface rice.p2p.scribe.maintenance.<A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#MAINTENANCE_ID">MAINTENANCE_ID</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/p2p/scribe/ScribeImpl.html#ScribeImpl(rice.p2p.commonapi.Node, rice.p2p.scribe.ScribePolicy, java.lang.String)">ScribeImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A>&nbsp;policy,
java.lang.String&nbsp;instance)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for Scribe</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#ScribeImpl(rice.p2p.commonapi.Node, rice.p2p.scribe.ScribePolicy, java.lang.String, rice.p2p.scribe.maintenance.ScribeMaintenancePolicy)">ScribeImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A>&nbsp;policy,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.html" title="interface in rice.p2p.scribe.maintenance">ScribeMaintenancePolicy</A>&nbsp;maintenancePolicy)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for Scribe</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#ScribeImpl(rice.p2p.commonapi.Node, java.lang.String)">ScribeImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
java.lang.String&nbsp;instance)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for Scribe, using the default policy.</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/p2p/scribe/ScribeImpl.html#ackMessageReceived(rice.p2p.scribe.messaging.SubscribeAckMessage)">ackMessageReceived</A></B>(<A HREF="../../../rice/p2p/scribe/messaging/SubscribeAckMessage.html" title="class in rice.p2p.scribe.messaging">SubscribeAckMessage</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Internal method which processes an ack message</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#addChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">addChild</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;Adds a child to the given topic</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/p2p/scribe/ScribeImpl.html#addChildHelper(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">addChildHelper</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;Adds a child to the given topic, using the specified sequence number in the ack message
sent to the child.</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/scribe/ScribeImpl.html#addToAllChildren(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">addToAllChildren</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<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;This method should be invoked after the state change in the Topic Manager
has been made.</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/scribe/ScribeImpl.html#addToAllParents(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">addToAllParents</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</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/p2p/scribe/ScribeImpl.html#allParentsContains(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">allParentsContains</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</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/p2p/scribe/ScribeImpl.html#allParentsContainsParent(rice.p2p.commonapi.NodeHandle)">allParentsContainsParent</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent)">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/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Anycasts the given content to a member of the given topic</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/scribe/ScribeImpl.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">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/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<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;Anycasts the given content to a member of the given topic
The hint helps us to implement centralized algorithms where the hint is the
cachedRoot for the topic.</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/scribe/ScribeImpl.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;Anycasts the given content to a member of the given topic</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/scribe/ScribeImpl.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">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,
<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;Anycasts the given content to a member of the given topic
The hint helps us to implement centralized algorithms where the hint is the
cachedRoot for the topic.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#containsChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">containsChild</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;&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/p2p/scribe/ScribeImpl.html#containsTopic(rice.p2p.scribe.Topic)">containsTopic</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;Returns true if there is a TopicManager associated with this topic (any
parent/children/client exists)</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/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#convert(rice.p2p.scribe.ScribeContent)">convert</A></B>(<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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#deliver(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message)">deliver</A></B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called on the application at the destination node for the given id.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#destroy()">destroy</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;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#doSubscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">doSubscribe</A></B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<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 method prevents re-subscription to topics you are already a part of.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#forward(rice.p2p.commonapi.RouteMessage)">forward</A></B>(<A HREF="../../../rice/p2p/commonapi/RouteMessage.html" title="interface in rice.p2p.commonapi">RouteMessage</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked on applications when the underlying node is about to forward the given
message with the provided target to the specified next hop.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getChildren(rice.p2p.scribe.Topic)">getChildren</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;Returns the list of children for a given topic</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection&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/p2p/scribe/ScribeImpl.html#getChildrenOfTopic(rice.p2p.scribe.Topic)">getChildrenOfTopic</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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getClients(rice.p2p.scribe.Topic)">getClients</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;Returns the list of clients for a given topic</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getClientsByTopic(rice.p2p.scribe.Topic)">getClientsByTopic</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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/scribe/rawserialization/ScribeContentDeserializer.html" title="interface in rice.p2p.scribe.rawserialization">ScribeContentDeserializer</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getContentDeserializer()">getContentDeserializer</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/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getEndpoint()">getEndpoint</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/environment/Environment.html" title="class in rice.environment">Environment</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getEnvironment()">getEnvironment</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&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/scribe/ScribeImpl.html#getId()">getId</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Id of the local node</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/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getMultiClient(rice.p2p.scribe.ScribeClient)">getMultiClient</A></B>(<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getParent(rice.p2p.scribe.Topic)">getParent</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;Returns the parent for a given topic</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/Id.html" title="interface in rice.p2p.commonapi">Id</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getPathToRoot(rice.p2p.scribe.Topic)">getPathToRoot</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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getPolicy()">getPolicy</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the current policy for this scribe object</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/scribe/ScribeImpl.html#getRoot(rice.p2p.scribe.Topic)">getRoot</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;Returns the root of the topic, if we can determine it.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getSimpleClients(java.util.Collection)">getSimpleClients</A></B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&gt;&nbsp;multi)</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/scribe/ScribeImpl.TopicManager.html" title="class in rice.p2p.scribe">ScribeImpl.TopicManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getTopicManager(rice.p2p.scribe.Topic)">getTopicManager</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;Lazy constructor.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getTopics()">getTopics</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/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getTopics(rice.p2p.scribe.ScribeClient)">getTopics</A></B>(<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the list of topics the given client is subscribed
to.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getTopicsByChild(rice.p2p.commonapi.NodeHandle)">getTopicsByChild</A></B>(<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;This returns the topics for which the parameter 'child' is a Scribe tree
child of the local node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getTopicsByClient(rice.p2p.scribe.ScribeClient)">getTopicsByClient</A></B>(<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the list of topics the given client is subscribed
to.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getTopicsByClient(rice.p2p.scribe.ScribeMultiClient)">getTopicsByClient</A></B>(<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#getTopicsByParent(rice.p2p.commonapi.NodeHandle)">getTopicsByParent</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This returns the topics for which the parameter 'parent' is a Scribe tree
parent of the local node</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/p2p/scribe/ScribeImpl.html#handleForwardSubscribeMessage(rice.p2p.scribe.messaging.SubscribeMessage)">handleForwardSubscribeMessage</A></B>(<A HREF="../../../rice/p2p/scribe/messaging/SubscribeMessage.html" title="class in rice.p2p.scribe.messaging">SubscribeMessage</A>&nbsp;sMessage)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is complicated because the SubscribeMessage may have many topics to subscribe to at once.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#isRoot(rice.p2p.scribe.Topic)">isRoot</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;Returns whether or not this Scribe is the root for the given topic</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#numChildren(rice.p2p.scribe.Topic)">numChildren</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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#printAllChildrenDataStructure()">printAllChildrenDataStructure</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#printAllParentsDataStructure()">printAllParentsDataStructure</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#publish(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent)">publish</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Publishes the given message to the topic.</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/scribe/ScribeImpl.html#publish(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">publish</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;Publishes the given message to the topic.</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/scribe/ScribeImpl.html#recvAnycastFail(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle, rice.p2p.scribe.ScribeContent)">recvAnycastFail</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;failedAtNode,
<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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#removeChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">removeChild</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;Removes a child from the given topic</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/scribe/ScribeImpl.html#removeChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle, boolean)">removeChild</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,
boolean&nbsp;sendDrop)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a child from the given topic</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/scribe/ScribeImpl.html#removeFromAllChildren(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">removeFromAllChildren</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<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;Need to be holding lock: topicManagers</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/scribe/ScribeImpl.html#removeFromAllParents(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">removeFromAllParents</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#setContentDeserializer(rice.p2p.scribe.rawserialization.ScribeContentDeserializer)">setContentDeserializer</A></B>(<A HREF="../../../rice/p2p/scribe/rawserialization/ScribeContentDeserializer.html" title="interface in rice.p2p.scribe.rawserialization">ScribeContentDeserializer</A>&nbsp;deserializer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#setParent(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle, java.util.List)">setParent</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;parent,
java.util.List&lt;<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&gt;&nbsp;pathToRoot)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#setPolicy(rice.p2p.scribe.ScribePolicy)">setPolicy</A></B>(<A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A>&nbsp;policy)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the current policy for this scribe object</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/scribe/ScribeImpl.html#subscribe(java.util.Collection)">subscribe</A></B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;topics)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<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;Subscribe to multiple topics.</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/scribe/ScribeImpl.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content,
<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;Subscribe to multiple topics.</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/scribe/ScribeImpl.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content,
<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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient)">subscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subscribes the given client to the provided topic.</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/scribe/ScribeImpl.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent)">subscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subscribes the given client to the provided topic.</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/scribe/ScribeImpl.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<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;Subscribes the given client to the provided topic.</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/scribe/ScribeImpl.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent)">subscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<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;Subscribes the given client to the provided topic.</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/scribe/ScribeImpl.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content,
<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;Subscribes the given client to the provided topic.</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/scribe/ScribeImpl.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient)">subscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subscribes the given client to the provided topic.</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/scribe/ScribeImpl.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content,
<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;&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/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#toRawScribeContent(rice.p2p.scribe.ScribeContent)">toRawScribeContent</A></B>(<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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#toString()">toString</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#unsubscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient)">unsubscribe</A></B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;topicsToUnsubscribe,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This code:
for each Topic:
1) removes the client from the TopicManager
2)</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/scribe/ScribeImpl.html#unsubscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient)">unsubscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unsubscribes the given client from the provided topic.getId</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/scribe/ScribeImpl.html#unsubscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient)">unsubscribe</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/scribe/ScribeImpl.html#update(rice.p2p.commonapi.NodeHandle, boolean)">update</A></B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;handle,
boolean&nbsp;joined)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked to inform the application that the given node has either joined or left
the neighbor set of the local node, as the set would be returned by the neighborSet call.</TD>
</TR>
<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/scribe/ScribeImpl.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;Called when a Node's liveness changes</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="INFO_2"><!-- --></A><H3>
INFO_2</H3>
<PRE>
public static final int <B>INFO_2</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#rice.p2p.scribe.ScribeImpl.INFO_2">Constant Field Values</A></DL>
</DL>
<HR>
<A NAME="MAINTENANCE_INTERVAL"><!-- --></A><H3>
MAINTENANCE_INTERVAL</H3>
<PRE>
public final int <B>MAINTENANCE_INTERVAL</B></PRE>
<DL>
<DD>The interval with which to perform maintenance
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="MESSAGE_TIMEOUT"><!-- --></A><H3>
MESSAGE_TIMEOUT</H3>
<PRE>
public final int <B>MESSAGE_TIMEOUT</B></PRE>
<DL>
<DD>the timeout for a subscribe message
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="topicManagers"><!-- --></A><H3>
topicManagers</H3>
<PRE>
public java.util.Hashtable&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>,<A HREF="../../../rice/p2p/scribe/ScribeImpl.TopicManager.html" title="class in rice.p2p.scribe">ScribeImpl.TopicManager</A>&gt; <B>topicManagers</B></PRE>
<DL>
<DD>the hashtable of topic -> TopicManager
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="policy"><!-- --></A><H3>
policy</H3>
<PRE>
protected <A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A> <B>policy</B></PRE>
<DL>
<DD>this scribe's policy
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="endpoint"><!-- --></A><H3>
endpoint</H3>
<PRE>
protected <A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A> <B>endpoint</B></PRE>
<DL>
<DD>this application's endpoint
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="localHandle"><!-- --></A><H3>
localHandle</H3>
<PRE>
protected <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A> <B>localHandle</B></PRE>
<DL>
<DD>the local node handle
<P>
<DL>
</DL>
</DL>
<HR>
<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>
<DL>
</DL>
</DL>
<HR>
<A NAME="allChildren"><!-- --></A><H3>
allChildren</H3>
<PRE>
public java.util.HashMap&lt;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>,java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&gt; <B>allChildren</B></PRE>
<DL>
<DD>This contains a mapping of child - > all topics for which the local node
has this node(hashtable key) as a child
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="allParents"><!-- --></A><H3>
allParents</H3>
<PRE>
public java.util.HashMap&lt;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>,java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&gt; <B>allParents</B></PRE>
<DL>
<DD>This contains a mapping of parent - > all topics for which the local node
has this node(hashtable key) as a parent
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="roots"><!-- --></A><H3>
roots</H3>
<PRE>
public java.util.Set&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt; <B>roots</B></PRE>
<DL>
<DD>Topics that we are the root.
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="pending"><!-- --></A><H3>
pending</H3>
<PRE>
public java.util.Set&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt; <B>pending</B></PRE>
<DL>
<DD>Topics that (should) have an outsanding subscription.
Topics that are in this set have no parent, and we are not the root.
<P>
<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="ScribeImpl(rice.p2p.commonapi.Node, java.lang.String)"><!-- --></A><H3>
ScribeImpl</H3>
<PRE>
public <B>ScribeImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
java.lang.String&nbsp;instance)</PRE>
<DL>
<DD>Constructor for Scribe, using the default policy.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node below this Scribe implementation<DD><CODE>instance</CODE> - The unique instance name of this Scribe</DL>
</DL>
<HR>
<A NAME="ScribeImpl(rice.p2p.commonapi.Node, rice.p2p.scribe.ScribePolicy, java.lang.String)"><!-- --></A><H3>
ScribeImpl</H3>
<PRE>
public <B>ScribeImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A>&nbsp;policy,
java.lang.String&nbsp;instance)</PRE>
<DL>
<DD>Constructor for Scribe
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node below this Scribe implementation<DD><CODE>policy</CODE> - The policy for this Scribe<DD><CODE>instance</CODE> - The unique instance name of this Scribe</DL>
</DL>
<HR>
<A NAME="ScribeImpl(rice.p2p.commonapi.Node, rice.p2p.scribe.ScribePolicy, java.lang.String, rice.p2p.scribe.maintenance.ScribeMaintenancePolicy)"><!-- --></A><H3>
ScribeImpl</H3>
<PRE>
public <B>ScribeImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
<A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A>&nbsp;policy,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.html" title="interface in rice.p2p.scribe.maintenance">ScribeMaintenancePolicy</A>&nbsp;maintenancePolicy)</PRE>
<DL>
<DD>Constructor for Scribe
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - The node below this Scribe implementation<DD><CODE>policy</CODE> - The policy for this Scribe<DD><CODE>instance</CODE> - The unique instance name of this Scribe</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="getEnvironment()"><!-- --></A><H3>
getEnvironment</H3>
<PRE>
public <A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A> <B>getEnvironment</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getEnvironment()">getEnvironment</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPolicy()"><!-- --></A><H3>
getPolicy</H3>
<PRE>
public <A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A> <B>getPolicy</B>()</PRE>
<DL>
<DD>Returns the current policy for this scribe object
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getPolicy()">getPolicy</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The current policy for this scribe</DL>
</DD>
</DL>
<HR>
<A NAME="setPolicy(rice.p2p.scribe.ScribePolicy)"><!-- --></A><H3>
setPolicy</H3>
<PRE>
public void <B>setPolicy</B>(<A HREF="../../../rice/p2p/scribe/ScribePolicy.html" title="interface in rice.p2p.scribe">ScribePolicy</A>&nbsp;policy)</PRE>
<DL>
<DD>Sets the current policy for this scribe object
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#setPolicy(rice.p2p.scribe.ScribePolicy)">setPolicy</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>policy</CODE> - The current policy for this scribe</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 the local node
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The Id of the local node</DL>
</DD>
</DL>
<HR>
<A NAME="numChildren(rice.p2p.scribe.Topic)"><!-- --></A><H3>
numChildren</H3>
<PRE>
public int <B>numChildren</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#numChildren(rice.p2p.scribe.Topic)">numChildren</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="containsTopic(rice.p2p.scribe.Topic)"><!-- --></A><H3>
containsTopic</H3>
<PRE>
public boolean <B>containsTopic</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD>Returns true if there is a TopicManager associated with this topic (any
parent/children/client exists)
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#containsTopic(rice.p2p.scribe.Topic)">containsTopic</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getClients(rice.p2p.scribe.Topic)"><!-- --></A><H3>
getClients</H3>
<PRE>
public java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&gt; <B>getClients</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD>Returns the list of clients for a given topic
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getClients(rice.p2p.scribe.Topic)">getClients</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to return the clients of
<DT><B>Returns:</B><DD>The clients of the topic</DL>
</DD>
</DL>
<HR>
<A NAME="getClientsByTopic(rice.p2p.scribe.Topic)"><!-- --></A><H3>
getClientsByTopic</H3>
<PRE>
public java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&gt; <B>getClientsByTopic</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getClientsByTopic(rice.p2p.scribe.Topic)">getClientsByTopic</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getSimpleClients(java.util.Collection)"><!-- --></A><H3>
getSimpleClients</H3>
<PRE>
protected java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&gt; <B>getSimpleClients</B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&gt;&nbsp;multi)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getMultiClient(rice.p2p.scribe.ScribeClient)"><!-- --></A><H3>
getMultiClient</H3>
<PRE>
protected <A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A> <B>getMultiClient</B>(<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getChildren(rice.p2p.scribe.Topic)"><!-- --></A><H3>
getChildren</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>[] <B>getChildren</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD>Returns the list of children for a given topic
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getChildren(rice.p2p.scribe.Topic)">getChildren</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to return the children of
<DT><B>Returns:</B><DD>The children of the topic</DL>
</DD>
</DL>
<HR>
<A NAME="getChildrenOfTopic(rice.p2p.scribe.Topic)"><!-- --></A><H3>
getChildrenOfTopic</H3>
<PRE>
public java.util.Collection&lt;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&gt; <B>getChildrenOfTopic</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getChildrenOfTopic(rice.p2p.scribe.Topic)">getChildrenOfTopic</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getParent(rice.p2p.scribe.Topic)"><!-- --></A><H3>
getParent</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A> <B>getParent</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD>Returns the parent for a given topic
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getParent(rice.p2p.scribe.Topic)">getParent</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to return the parent of
<DT><B>Returns:</B><DD>The parent of the topic</DL>
</DD>
</DL>
<HR>
<A NAME="isRoot(rice.p2p.scribe.Topic)"><!-- --></A><H3>
isRoot</H3>
<PRE>
public boolean <B>isRoot</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD>Returns whether or not this Scribe is the root for the given topic
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#isRoot(rice.p2p.scribe.Topic)">isRoot</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic in question
<DT><B>Returns:</B><DD>Whether or not we are currently the root</DL>
</DD>
</DL>
<HR>
<A NAME="getRoot(rice.p2p.scribe.Topic)"><!-- --></A><H3>
getRoot</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A> <B>getRoot</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getRoot(rice.p2p.scribe.Topic)">BaseScribe</A></CODE></B></DD>
<DD>Returns the root of the topic, if we can determine it.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getRoot(rice.p2p.scribe.Topic)">getRoot</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>null if beyond our knowledge range</DL>
</DD>
</DL>
<HR>
<A NAME="ackMessageReceived(rice.p2p.scribe.messaging.SubscribeAckMessage)"><!-- --></A><H3>
ackMessageReceived</H3>
<PRE>
protected void <B>ackMessageReceived</B>(<A HREF="../../../rice/p2p/scribe/messaging/SubscribeAckMessage.html" title="class in rice.p2p.scribe.messaging">SubscribeAckMessage</A>&nbsp;message)</PRE>
<DL>
<DD>Internal method which processes an ack message
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - The ackMessage</DL>
</DD>
</DL>
<HR>
<A NAME="containsChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
containsChild</H3>
<PRE>
public boolean <B>containsChild</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><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#containsChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">containsChild</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(java.util.Collection)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;topics)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client)</PRE>
<DL>
<DD>Subscribes the given client to the provided topic. Any message published to the topic will be
delivered to the Client via the deliver() method.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to subscribe to<DD><CODE>client</CODE> - The client to give messages to</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</PRE>
<DL>
<DD>Subscribes the given client to the provided topic. Any message published to the topic will be
delivered to the Client via the deliver() method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to subscribe to<DD><CODE>client</CODE> - The client to give messages to</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent)">JavaScribe</A></CODE></B></DD>
<DD>Subscribes the given client to the provided topic. Any message published
to the topic will be delivered to the Client via the deliver() method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to subscribe to<DD><CODE>client</CODE> - The client to give messages to<DD><CODE>content</CODE> - The content to include in the subscribe</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">JavaScribe</A></CODE></B></DD>
<DD>Subscribes the given client to the provided topic. Any message published
to the topic will be delivered to the Client via the deliver() method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to subscribe to<DD><CODE>client</CODE> - The client to give messages to<DD><CODE>content</CODE> - The content to include in the subscribe<DD><CODE>hint</CODE> - The first hop of the message ( Helpful to implement a centralized solution)</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent)">RawScribe</A></CODE></B></DD>
<DD>Subscribes the given client to the provided topic. Any message published
to the topic will be delivered to the Client via the deliver() method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to subscribe to<DD><CODE>client</CODE> - The client to give messages to<DD><CODE>content</CODE> - The content to include in the subscribe</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">RawScribe</A></CODE></B></DD>
<DD>Subscribes the given client to the provided topic. Any message published
to the topic will be delivered to the Client via the deliver() method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to subscribe to<DD><CODE>client</CODE> - The client to give messages to<DD><CODE>content</CODE> - The content to include in the subscribe<DD><CODE>hint</CODE> - The first hop of the message ( Helpful to implement a centralized solution)</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(java.util.Collection, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">RawScribe</A></CODE></B></DD>
<DD>Subscribe to multiple topics.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
<DD><CODE>hint</CODE> - the first hop</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(java.util.Collection, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">JavaScribe</A></CODE></B></DD>
<DD>Subscribe to multiple topics.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#subscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#subscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">subscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="toRawScribeContent(rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
toRawScribeContent</H3>
<PRE>
protected <A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A> <B>toRawScribeContent</B>(<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="doSubscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
doSubscribe</H3>
<PRE>
protected void <B>doSubscribe</B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;theTopics,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD>This method prevents re-subscription to topics you are already a part of.
However it allows subscription if you were the root, but there is now a root.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>theTopics</CODE> - <DD><CODE>client</CODE> - <DD><CODE>content</CODE> - <DD><CODE>hint</CODE> - </DL>
</DD>
</DL>
<HR>
<A NAME="unsubscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient)"><!-- --></A><H3>
unsubscribe</H3>
<PRE>
public void <B>unsubscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</PRE>
<DL>
<DD>Unsubscribes the given client from the provided topic.getId
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#unsubscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeClient)">unsubscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to unsubscribe from<DD><CODE>client</CODE> - The client to unsubscribe</DL>
</DD>
</DL>
<HR>
<A NAME="unsubscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient)"><!-- --></A><H3>
unsubscribe</H3>
<PRE>
public void <B>unsubscribe</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#unsubscribe(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeMultiClient)">unsubscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="unsubscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient)"><!-- --></A><H3>
unsubscribe</H3>
<PRE>
public void <B>unsubscribe</B>(java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;topicsToUnsubscribe,
<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client)</PRE>
<DL>
<DD>This code:
for each Topic:
1) removes the client from the TopicManager
2)
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#unsubscribe(java.util.Collection, rice.p2p.scribe.ScribeMultiClient)">unsubscribe</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="publish(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
publish</H3>
<PRE>
public void <B>publish</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>Publishes the given message to the topic.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#publish(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">publish</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to publish to<DD><CODE>content</CODE> - The content to publish</DL>
</DD>
</DL>
<HR>
<A NAME="publish(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent)"><!-- --></A><H3>
publish</H3>
<PRE>
public void <B>publish</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#publish(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent)">RawScribe</A></CODE></B></DD>
<DD>Publishes the given message to the topic.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#publish(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent)">publish</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to publish to<DD><CODE>content</CODE> - The content to publish</DL>
</DD>
</DL>
<HR>
<A NAME="anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
anycast</H3>
<PRE>
public void <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>Anycasts the given content to a member of the given topic
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">anycast</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to anycast to<DD><CODE>content</CODE> - The content to anycast</DL>
</DD>
</DL>
<HR>
<A NAME="anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
anycast</H3>
<PRE>
public void <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,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">JavaScribe</A></CODE></B></DD>
<DD>Anycasts the given content to a member of the given topic
The hint helps us to implement centralized algorithms where the hint is the
cachedRoot for the topic. Additionally it enables us to do more fancy
anycasts that explore more portions of the Scribe tree
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent, rice.p2p.commonapi.NodeHandle)">anycast</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/javaserialized/JavaScribe.html" title="interface in rice.p2p.scribe.javaserialized">JavaScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to anycast to<DD><CODE>content</CODE> - The content to anycast<DD><CODE>hint</CODE> - the first hop of the Anycast</DL>
</DD>
</DL>
<HR>
<A NAME="anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent)"><!-- --></A><H3>
anycast</H3>
<PRE>
public void <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/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent)">RawScribe</A></CODE></B></DD>
<DD>Anycasts the given content to a member of the given topic
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent)">anycast</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to anycast to<DD><CODE>content</CODE> - The content to anycast</DL>
</DD>
</DL>
<HR>
<A NAME="anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
anycast</H3>
<PRE>
public void <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/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A>&nbsp;content,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;hint)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">RawScribe</A></CODE></B></DD>
<DD>Anycasts the given content to a member of the given topic
The hint helps us to implement centralized algorithms where the hint is the
cachedRoot for the topic. Additionally it enables us to do more fancy
anycasts that explore more portions of the Scribe tree
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.rawserialization.RawScribeContent, rice.p2p.commonapi.NodeHandle)">anycast</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to anycast to<DD><CODE>content</CODE> - The content to anycast<DD><CODE>hint</CODE> - the first hop of the Anycast</DL>
</DD>
</DL>
<HR>
<A NAME="addChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
addChild</H3>
<PRE>
public void <B>addChild</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>Adds a child to the given topic
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#addChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">addChild</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to add the child to<DD><CODE>child</CODE> - The child to add</DL>
</DD>
</DL>
<HR>
<A NAME="setParent(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle, java.util.List)"><!-- --></A><H3>
setParent</H3>
<PRE>
public void <B>setParent</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;parent,
java.util.List&lt;<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&gt;&nbsp;pathToRoot)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#setParent(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle, java.util.List)">setParent</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getTopicManager(rice.p2p.scribe.Topic)"><!-- --></A><H3>
getTopicManager</H3>
<PRE>
public <A HREF="../../../rice/p2p/scribe/ScribeImpl.TopicManager.html" title="class in rice.p2p.scribe">ScribeImpl.TopicManager</A> <B>getTopicManager</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD>Lazy constructor.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> -
<DT><B>Returns:</B><DD>never null</DL>
</DD>
</DL>
<HR>
<A NAME="addChildHelper(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
addChildHelper</H3>
<PRE>
protected boolean <B>addChildHelper</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>Adds a child to the given topic, using the specified sequence number in the ack message
sent to the child.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic<DD><CODE>child</CODE> - THe child to add<DD><CODE>id</CODE> - The seuqnce number
<DT><B>Returns:</B><DD>true if we need to subscribe to this topic because implicitly subscribing</DL>
</DD>
</DL>
<HR>
<A NAME="removeChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
removeChild</H3>
<PRE>
public void <B>removeChild</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>Removes a child from the given topic
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#removeChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">removeChild</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to remove the child from<DD><CODE>child</CODE> - The child to remove</DL>
</DD>
</DL>
<HR>
<A NAME="removeChild(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle, boolean)"><!-- --></A><H3>
removeChild</H3>
<PRE>
protected void <B>removeChild</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,
boolean&nbsp;sendDrop)</PRE>
<DL>
<DD>Removes a child from the given topic
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to remove the child from<DD><CODE>child</CODE> - The child to remove<DD><CODE>sendDrop</CODE> - Whether or not to send a drop message to the chil</DL>
</DD>
</DL>
<HR>
<A NAME="getTopicsByClient(rice.p2p.scribe.ScribeClient)"><!-- --></A><H3>
getTopicsByClient</H3>
<PRE>
public java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt; <B>getTopicsByClient</B>(<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</PRE>
<DL>
<DD>Returns the list of topics the given client is subscribed
to.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getTopicsByClient(rice.p2p.scribe.ScribeClient)">getTopicsByClient</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>client</CODE> - The client in question
<DT><B>Returns:</B><DD>The list of topics</DL>
</DD>
</DL>
<HR>
<A NAME="getTopicsByClient(rice.p2p.scribe.ScribeMultiClient)"><!-- --></A><H3>
getTopicsByClient</H3>
<PRE>
public java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt; <B>getTopicsByClient</B>(<A HREF="../../../rice/p2p/scribe/ScribeMultiClient.html" title="interface in rice.p2p.scribe">ScribeMultiClient</A>&nbsp;client)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getTopicsByClient(rice.p2p.scribe.ScribeMultiClient)">getTopicsByClient</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getTopics(rice.p2p.scribe.ScribeClient)"><!-- --></A><H3>
getTopics</H3>
<PRE>
public <A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>[] <B>getTopics</B>(<A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A>&nbsp;client)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getTopics(rice.p2p.scribe.ScribeClient)">BaseScribe</A></CODE></B></DD>
<DD>Returns the list of topics the given client is subscribed
to.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html#getTopics(rice.p2p.scribe.ScribeClient)">getTopics</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/BaseScribe.html" title="interface in rice.p2p.scribe">BaseScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>client</CODE> - The client in question
<DT><B>Returns:</B><DD>The list of topics</DL>
</DD>
</DL>
<HR>
<A NAME="recvAnycastFail(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle, rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
recvAnycastFail</H3>
<PRE>
protected void <B>recvAnycastFail</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;failedAtNode,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="addToAllChildren(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
addToAllChildren</H3>
<PRE>
protected void <B>addToAllChildren</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</PRE>
<DL>
<DD>This method should be invoked after the state change in the Topic Manager
has been made. This helps us to know the current state of the system and
thus generate WARNING messages only in cases of redundancy
Need to be holding lock: topicManagers
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>t</CODE> - <DD><CODE>child</CODE> - </DL>
</DD>
</DL>
<HR>
<A NAME="removeFromAllChildren(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
removeFromAllChildren</H3>
<PRE>
protected void <B>removeFromAllChildren</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</PRE>
<DL>
<DD>Need to be holding lock: topicManagers
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>t</CODE> - <DD><CODE>child</CODE> - </DL>
</DD>
</DL>
<HR>
<A NAME="addToAllParents(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
addToAllParents</H3>
<PRE>
protected void <B>addToAllParents</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="removeFromAllParents(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
removeFromAllParents</H3>
<PRE>
protected void <B>removeFromAllParents</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="allParentsContains(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
allParentsContains</H3>
<PRE>
public boolean <B>allParentsContains</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;t,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="allParentsContainsParent(rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
allParentsContainsParent</H3>
<PRE>
public boolean <B>allParentsContainsParent</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="printAllParentsDataStructure()"><!-- --></A><H3>
printAllParentsDataStructure</H3>
<PRE>
public void <B>printAllParentsDataStructure</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="printAllChildrenDataStructure()"><!-- --></A><H3>
printAllChildrenDataStructure</H3>
<PRE>
public void <B>printAllChildrenDataStructure</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getTopicsByParent(rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
getTopicsByParent</H3>
<PRE>
public java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt; <B>getTopicsByParent</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;parent)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#getTopicsByParent(rice.p2p.commonapi.NodeHandle)">MaintainableScribe</A></CODE></B></DD>
<DD>This returns the topics for which the parameter 'parent' is a Scribe tree
parent of the local node
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#getTopicsByParent(rice.p2p.commonapi.NodeHandle)">getTopicsByParent</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parent</CODE> - null/localHandle for topics rooted by us</DL>
</DD>
</DL>
<HR>
<A NAME="getTopicsByChild(rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
getTopicsByChild</H3>
<PRE>
public java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt; <B>getTopicsByChild</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#getTopicsByChild(rice.p2p.commonapi.NodeHandle)">MaintainableScribe</A></CODE></B></DD>
<DD>This returns the topics for which the parameter 'child' is a Scribe tree
child of the local node
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#getTopicsByChild(rice.p2p.commonapi.NodeHandle)">getTopicsByChild</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="forward(rice.p2p.commonapi.RouteMessage)"><!-- --></A><H3>
forward</H3>
<PRE>
public boolean <B>forward</B>(<A HREF="../../../rice/p2p/commonapi/RouteMessage.html" title="interface in rice.p2p.commonapi">RouteMessage</A>&nbsp;message)</PRE>
<DL>
<DD>This method is invoked on applications when the underlying node is about to forward the given
message with the provided target to the specified next hop. Applications can change the
contents of the message, specify a different nextHop (through re-routing), or completely
terminate the message.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Application.html#forward(rice.p2p.commonapi.RouteMessage)">forward</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - The message being sent, containing an internal message along with a destination
key and nodeHandle next hop.
<DT><B>Returns:</B><DD>Whether or not to forward the message further</DL>
</DD>
</DL>
<HR>
<A NAME="handleForwardSubscribeMessage(rice.p2p.scribe.messaging.SubscribeMessage)"><!-- --></A><H3>
handleForwardSubscribeMessage</H3>
<PRE>
protected boolean <B>handleForwardSubscribeMessage</B>(<A HREF="../../../rice/p2p/scribe/messaging/SubscribeMessage.html" title="class in rice.p2p.scribe.messaging">SubscribeMessage</A>&nbsp;sMessage)</PRE>
<DL>
<DD>This is complicated because the SubscribeMessage may have many topics to subscribe to at once.
Also, for every topic we don't accept, we must branch the SubscribeMessage based on the routing table.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sMessage</CODE> -
<DT><B>Returns:</B><DD>true if it needs to be forward, false if we handled it</DL>
</DD>
</DL>
<HR>
<A NAME="deliver(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message)"><!-- --></A><H3>
deliver</H3>
<PRE>
public void <B>deliver</B>(<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&nbsp;id,
<A HREF="../../../rice/p2p/commonapi/Message.html" title="interface in rice.p2p.commonapi">Message</A>&nbsp;message)</PRE>
<DL>
<DD>This method is called on the application at the destination node for the given id.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Application.html#deliver(rice.p2p.commonapi.Id, rice.p2p.commonapi.Message)">deliver</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The destination id of the message<DD><CODE>message</CODE> - The message being sent</DL>
</DD>
</DL>
<HR>
<A NAME="convert(rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
convert</H3>
<PRE>
protected <A HREF="../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A> <B>convert</B>(<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</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>Called when a Node's liveness changes
<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>
<HR>
<A NAME="update(rice.p2p.commonapi.NodeHandle, boolean)"><!-- --></A><H3>
update</H3>
<PRE>
public void <B>update</B>(<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;handle,
boolean&nbsp;joined)</PRE>
<DL>
<DD>This method is invoked to inform the application that the given node has either joined or left
the neighbor set of the local node, as the set would be returned by the neighborSet call.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/commonapi/Application.html#update(rice.p2p.commonapi.NodeHandle, boolean)">update</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/commonapi/Application.html" title="interface in rice.p2p.commonapi">Application</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>handle</CODE> - The handle that has joined/left<DD><CODE>joined</CODE> - Whether the node has joined or left</DL>
</DD>
</DL>
<HR>
<A NAME="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="destroy()"><!-- --></A><H3>
destroy</H3>
<PRE>
public void <B>destroy</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/Destructable.html#destroy()">destroy</A></CODE> in interface <CODE><A HREF="../../../rice/Destructable.html" title="interface in rice">Destructable</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getEndpoint()"><!-- --></A><H3>
getEndpoint</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/Endpoint.html" title="interface in rice.p2p.commonapi">Endpoint</A> <B>getEndpoint</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#getEndpoint()">getEndpoint</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="setContentDeserializer(rice.p2p.scribe.rawserialization.ScribeContentDeserializer)"><!-- --></A><H3>
setContentDeserializer</H3>
<PRE>
public void <B>setContentDeserializer</B>(<A HREF="../../../rice/p2p/scribe/rawserialization/ScribeContentDeserializer.html" title="interface in rice.p2p.scribe.rawserialization">ScribeContentDeserializer</A>&nbsp;deserializer)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#setContentDeserializer(rice.p2p.scribe.rawserialization.ScribeContentDeserializer)">setContentDeserializer</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getContentDeserializer()"><!-- --></A><H3>
getContentDeserializer</H3>
<PRE>
public <A HREF="../../../rice/p2p/scribe/rawserialization/ScribeContentDeserializer.html" title="interface in rice.p2p.scribe.rawserialization">ScribeContentDeserializer</A> <B>getContentDeserializer</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html#getContentDeserializer()">getContentDeserializer</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/rawserialization/RawScribe.html" title="interface in rice.p2p.scribe.rawserialization">RawScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getTopics()"><!-- --></A><H3>
getTopics</H3>
<PRE>
public java.util.Collection&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt; <B>getTopics</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#getTopics()">getTopics</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPathToRoot(rice.p2p.scribe.Topic)"><!-- --></A><H3>
getPathToRoot</H3>
<PRE>
public java.util.List&lt;<A HREF="../../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A>&gt; <B>getPathToRoot</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html#getPathToRoot(rice.p2p.scribe.Topic)">getPathToRoot</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</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/ScribeImpl.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/scribe/ScribeContent.html" title="interface in rice.p2p.scribe"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/scribe/ScribeImpl.ScribeClientConverter.html" title="class in rice.p2p.scribe"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/p2p/scribe/ScribeImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ScribeImpl.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
<i>Copyright &#169; 2001-2005 - Rice Pastry.</i>
</BODY>
</HTML>