FreePastry/docs/javadoc/rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.html

351 lines
17 KiB
HTML
Raw 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:19 CET 2009 -->
<TITLE>
ScribeMaintenancePolicy (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="ScribeMaintenancePolicy (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/ScribeMaintenancePolicy.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/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.DefaultScribeMaintenancePolicy.html" title="class in rice.p2p.scribe.maintenance"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ScribeMaintenancePolicy.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;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&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.maintenance</FONT>
<BR>
Interface ScribeMaintenancePolicy</H2>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.DefaultScribeMaintenancePolicy.html" title="class in rice.p2p.scribe.maintenance">ScribeMaintenancePolicy.DefaultScribeMaintenancePolicy</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public interface <B>ScribeMaintenancePolicy</B></DL>
</PRE>
<P>
<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/maintenance/ScribeMaintenancePolicy.DefaultScribeMaintenancePolicy.html" title="class in rice.p2p.scribe.maintenance">ScribeMaintenancePolicy.DefaultScribeMaintenancePolicy</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.html#doMaintenance(rice.p2p.scribe.maintenance.MaintainableScribe)">doMaintenance</A></B>(<A HREF="../../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>&nbsp;scribe)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called periodically.</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/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.html#implicitSubscribe(java.util.List)">implicitSubscribe</A></B>(java.util.List&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;Called when subscribing for maintenance or tree rearrangement (such as parent death).</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/maintenance/ScribeMaintenancePolicy.html#nodeFaulty(rice.p2p.scribe.maintenance.MaintainableScribe, rice.p2p.commonapi.NodeHandle, java.util.List, java.util.List)">nodeFaulty</A></B>(<A HREF="../../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>&nbsp;scribe,
<A HREF="../../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;node,
java.util.List&lt;<A HREF="../../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;nodeWasParent,
java.util.List&lt;<A HREF="../../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;nodeWasChild)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When anyone in any Topic (child or parent) is detected faulty.</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/maintenance/ScribeMaintenancePolicy.html#noLongerRoot(rice.p2p.scribe.maintenance.MaintainableScribe, java.util.List)">noLongerRoot</A></B>(<A HREF="../../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>&nbsp;scribe,
java.util.List&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;Called when membership changes "near" the local node, in overlay space.</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/maintenance/ScribeMaintenancePolicy.html#subscribeFailed(rice.p2p.scribe.maintenance.MaintainableScribe, java.util.List)">subscribeFailed</A></B>(<A HREF="../../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>&nbsp;scribe,
java.util.List&lt;<A HREF="../../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;failedTopics)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The subscription failed.</TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ 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="doMaintenance(rice.p2p.scribe.maintenance.MaintainableScribe)"><!-- --></A><H3>
doMaintenance</H3>
<PRE>
void <B>doMaintenance</B>(<A HREF="../../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>&nbsp;scribe)</PRE>
<DL>
<DD>Called periodically.
Can be specified in millis by by the parameter:
p2p_scribe_maintenance_interval (default 180000) // 3 minutes
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="noLongerRoot(rice.p2p.scribe.maintenance.MaintainableScribe, java.util.List)"><!-- --></A><H3>
noLongerRoot</H3>
<PRE>
void <B>noLongerRoot</B>(<A HREF="../../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>&nbsp;scribe,
java.util.List&lt;<A HREF="../../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;topics)</PRE>
<DL>
<DD>Called when membership changes "near" the local node, in overlay space.
The typical use of this function would be to detect if the root has
changed and subscribe to the new root, like this:
<pre>
for (Topic topic : topics) {
scribe.subscribe(topic);
}
</pre>
Note however that this approach can cause a long tail at the head of the tree.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>handle</CODE> - <DD><CODE>membership</CODE> - </DL>
</DD>
</DL>
<HR>
<A NAME="nodeFaulty(rice.p2p.scribe.maintenance.MaintainableScribe, rice.p2p.commonapi.NodeHandle, java.util.List, java.util.List)"><!-- --></A><H3>
nodeFaulty</H3>
<PRE>
void <B>nodeFaulty</B>(<A HREF="../../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>&nbsp;scribe,
<A HREF="../../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;node,
java.util.List&lt;<A HREF="../../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;nodeWasParent,
java.util.List&lt;<A HREF="../../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;nodeWasChild)</PRE>
<DL>
<DD>When anyone in any Topic (child or parent) is detected faulty.
<pre>
for (Topic topic : nodeWasParent) {
if (!isRoot(topic)) {
scribe.subscribe(topic);
}
}
</pre>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="subscribeFailed(rice.p2p.scribe.maintenance.MaintainableScribe, java.util.List)"><!-- --></A><H3>
subscribeFailed</H3>
<PRE>
void <B>subscribeFailed</B>(<A HREF="../../../../rice/p2p/scribe/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance">MaintainableScribe</A>&nbsp;scribe,
java.util.List&lt;<A HREF="../../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;failedTopics)</PRE>
<DL>
<DD>The subscription failed. This is called if no particular client requested the Subscription.
TODO: Does this belong in the normal policy instead?
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>failedTopics</CODE> - </DL>
</DD>
</DL>
<HR>
<A NAME="implicitSubscribe(java.util.List)"><!-- --></A><H3>
implicitSubscribe</H3>
<PRE>
<A HREF="../../../../rice/p2p/scribe/rawserialization/RawScribeContent.html" title="interface in rice.p2p.scribe.rawserialization">RawScribeContent</A> <B>implicitSubscribe</B>(java.util.List&lt;<A HREF="../../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&gt;&nbsp;topics)</PRE>
<DL>
<DD>Called when subscribing for maintenance or tree rearrangement (such as parent death).
This gives the MaintenancePolicy a chance to set the ScribeContent in these messages.
To convert a ScribeContent (java serialized) to a RawScribeContent use new JavaSerializedScribeContent(content)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topics</CODE> - the topics we are implicitly subscribing to
<DT><B>Returns:</B><DD>the ScribeContent to put into the SubscribeMessage (null is ok)</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/ScribeMaintenancePolicy.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/maintenance/MaintainableScribe.html" title="interface in rice.p2p.scribe.maintenance"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.DefaultScribeMaintenancePolicy.html" title="class in rice.p2p.scribe.maintenance"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?rice/p2p/scribe/maintenance/ScribeMaintenancePolicy.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ScribeMaintenancePolicy.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;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&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>