ChronosX88 aaa73fe8b3 Pew
2019-05-13 16:45:05 +04:00

837 lines
34 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_07) on Fri Mar 13 20:01:00 CET 2009 -->
<TITLE>
Stripe (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="Stripe (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/Stripe.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/splitstream/SplitStreamSubscribeContent.html" title="class in rice.p2p.splitstream"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/splitstream/StripeId.html" title="class in rice.p2p.splitstream"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/p2p/splitstream/Stripe.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="Stripe.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
rice.p2p.splitstream</FONT>
<BR>
Class Stripe</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>rice.p2p.splitstream.Stripe</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>Stripe</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></DL>
</PRE>
<P>
This class encapsulates all data about an individual stripe. It is the basic unit in the system.
It is rooted at the stripeId for the stripe. It is through the stripe that data is sent. It can
be subscribed to in which case data is recieved or it can be unsubscribed from. A stripe can have
some number of children and controlling this is the way that bandwidth is controlled. If a stripe
is dropped then it searches for a new parent.
<P>
<P>
<DL>
<DT><B>Version:</B></DT>
<DD>$Id: Stripe.java 4654 2009-01-08 16:33:07Z jeffh $</DD>
<DT><B>Author:</B></DT>
<DD>Ansley Post, Alan Mislove, Atul Singh</DD>
</DL>
<HR>
<P>
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#channel">channel</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This stripe's channel</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Vector&lt;<A HREF="../../../rice/p2p/splitstream/SplitStreamClient.html" title="interface in rice.p2p.splitstream">SplitStreamClient</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#clients">clients</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The list of SplitStreamClients interested in data from this client</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Hashtable&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>,java.lang.Integer&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#failed">failed</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The count of failed subscribe messages</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#instance">instance</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;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#isPrimary">isPrimary</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A flag whether or not this stripe is the primary stripe for this node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#MAX_FAILED_SUBSCRIPTION">MAX_FAILED_SUBSCRIPTION</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The maximum number of failed subscriptions</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/scribe/Scribe.html" title="interface in rice.p2p.scribe">Scribe</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#scribe">scribe</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The scribe object</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/splitstream/StripeId.html" title="class in rice.p2p.splitstream">StripeId</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#stripeId">stripeId</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The stripeId for this stripe</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/Topic.html" title="class in rice.p2p.scribe">Topic</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#topic">topic</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The topic corresponding to this stripeId</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/splitstream/Stripe.html#Stripe(rice.p2p.splitstream.StripeId, rice.p2p.scribe.Scribe, java.lang.String, rice.p2p.splitstream.Channel, int)">Stripe</A></B>(<A HREF="../../../rice/p2p/splitstream/StripeId.html" title="class in rice.p2p.splitstream">StripeId</A>&nbsp;stripeId,
<A HREF="../../../rice/p2p/scribe/Scribe.html" title="interface in rice.p2p.scribe">Scribe</A>&nbsp;scribe,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A>&nbsp;channel,
int&nbsp;maxFailedSubscriptions)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The constructor used when creating a stripe from scratch.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">anycast</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked when an anycast is received for a topic which this client is interested
in.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#childAdded(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">childAdded</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Informs this client that a child was added to a topic in which it was interested in.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#childRemoved(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">childRemoved</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Informs this client that a child was removed from a topic in which it was interested in.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#deliver(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">deliver</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked when a message is delivered for a topic this client is interested in.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#getChildren()">getChildren</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Utility method.</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/splitstream/Stripe.html#getParent()">getParent</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Utility method.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../rice/p2p/splitstream/StripeId.html" title="class in rice.p2p.splitstream">StripeId</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/Stripe.html#getStripeId()">getStripeId</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets the StripeID for this stripe</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/splitstream/Stripe.html#isPrimary()">isPrimary</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether or not this stripe is the primary stripe for the local node</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/splitstream/Stripe.html#isRoot()">isRoot</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Utility method.</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/splitstream/Stripe.html#isSubscribed()">isSubscribed</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the state of the Stripe</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/splitstream/Stripe.html#publish(byte[])">publish</A></B>(byte[]&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Publishes the given data to this stripe</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/splitstream/Stripe.html#subscribe(rice.p2p.splitstream.SplitStreamClient)">subscribe</A></B>(<A HREF="../../../rice/p2p/splitstream/SplitStreamClient.html" title="interface in rice.p2p.splitstream">SplitStreamClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a client to this stripe - the client will be informed whenever data arrives for this stripe</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/splitstream/Stripe.html#subscribeFailed(rice.p2p.scribe.Topic)">subscribeFailed</A></B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Informs this client that a subscription failed</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/splitstream/Stripe.html#toString()">toString</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a String representation of this Stripe</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/splitstream/Stripe.html#unsubscribe(rice.p2p.splitstream.SplitStreamClient)">unsubscribe</A></B>(<A HREF="../../../rice/p2p/splitstream/SplitStreamClient.html" title="interface in rice.p2p.splitstream">SplitStreamClient</A>&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a client from this stripe - the client will no longer be informed whenever data arrives for this stripe</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="MAX_FAILED_SUBSCRIPTION"><!-- --></A><H3>
MAX_FAILED_SUBSCRIPTION</H3>
<PRE>
public final int <B>MAX_FAILED_SUBSCRIPTION</B></PRE>
<DL>
<DD>The maximum number of failed subscriptions
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="stripeId"><!-- --></A><H3>
stripeId</H3>
<PRE>
protected <A HREF="../../../rice/p2p/splitstream/StripeId.html" title="class in rice.p2p.splitstream">StripeId</A> <B>stripeId</B></PRE>
<DL>
<DD>The stripeId for this stripe
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="topic"><!-- --></A><H3>
topic</H3>
<PRE>
protected <A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A> <B>topic</B></PRE>
<DL>
<DD>The topic corresponding to this stripeId
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="scribe"><!-- --></A><H3>
scribe</H3>
<PRE>
protected <A HREF="../../../rice/p2p/scribe/Scribe.html" title="interface in rice.p2p.scribe">Scribe</A> <B>scribe</B></PRE>
<DL>
<DD>The scribe object
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="isPrimary"><!-- --></A><H3>
isPrimary</H3>
<PRE>
protected boolean <B>isPrimary</B></PRE>
<DL>
<DD>A flag whether or not this stripe is the primary stripe for this node
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="clients"><!-- --></A><H3>
clients</H3>
<PRE>
protected java.util.Vector&lt;<A HREF="../../../rice/p2p/splitstream/SplitStreamClient.html" title="interface in rice.p2p.splitstream">SplitStreamClient</A>&gt; <B>clients</B></PRE>
<DL>
<DD>The list of SplitStreamClients interested in data from this client
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="channel"><!-- --></A><H3>
channel</H3>
<PRE>
protected <A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A> <B>channel</B></PRE>
<DL>
<DD>This stripe's channel
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="failed"><!-- --></A><H3>
failed</H3>
<PRE>
protected java.util.Hashtable&lt;<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>,java.lang.Integer&gt; <B>failed</B></PRE>
<DL>
<DD>The count of failed subscribe messages
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="instance"><!-- --></A><H3>
instance</H3>
<PRE>
protected java.lang.String <B>instance</B></PRE>
<DL>
<DL>
</DL>
</DL>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="Stripe(rice.p2p.splitstream.StripeId, rice.p2p.scribe.Scribe, java.lang.String, rice.p2p.splitstream.Channel, int)"><!-- --></A><H3>
Stripe</H3>
<PRE>
public <B>Stripe</B>(<A HREF="../../../rice/p2p/splitstream/StripeId.html" title="class in rice.p2p.splitstream">StripeId</A>&nbsp;stripeId,
<A HREF="../../../rice/p2p/scribe/Scribe.html" title="interface in rice.p2p.scribe">Scribe</A>&nbsp;scribe,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A>&nbsp;channel,
int&nbsp;maxFailedSubscriptions)</PRE>
<DL>
<DD>The constructor used when creating a stripe from scratch.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>stripeId</CODE> - the stripeId that this stripe will be rooted at<DD><CODE>scribe</CODE> - the scribe the stripe is running on top of</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="getStripeId()"><!-- --></A><H3>
getStripeId</H3>
<PRE>
public <A HREF="../../../rice/p2p/splitstream/StripeId.html" title="class in rice.p2p.splitstream">StripeId</A> <B>getStripeId</B>()</PRE>
<DL>
<DD>gets the StripeID for this stripe
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>theStripeID</DL>
</DD>
</DL>
<HR>
<A NAME="isPrimary()"><!-- --></A><H3>
isPrimary</H3>
<PRE>
public boolean <B>isPrimary</B>()</PRE>
<DL>
<DD>Returns whether or not this stripe is the primary stripe for the local node
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>Whether or not this stripe is primary</DL>
</DD>
</DL>
<HR>
<A NAME="isSubscribed()"><!-- --></A><H3>
isSubscribed</H3>
<PRE>
public boolean <B>isSubscribed</B>()</PRE>
<DL>
<DD>get the state of the Stripe
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>the State the stripe is in</DL>
</DD>
</DL>
<HR>
<A NAME="subscribe(rice.p2p.splitstream.SplitStreamClient)"><!-- --></A><H3>
subscribe</H3>
<PRE>
public void <B>subscribe</B>(<A HREF="../../../rice/p2p/splitstream/SplitStreamClient.html" title="interface in rice.p2p.splitstream">SplitStreamClient</A>&nbsp;client)</PRE>
<DL>
<DD>Adds a client to this stripe - the client will be informed whenever data arrives for this stripe
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>client</CODE> - The client to add</DL>
</DD>
</DL>
<HR>
<A NAME="unsubscribe(rice.p2p.splitstream.SplitStreamClient)"><!-- --></A><H3>
unsubscribe</H3>
<PRE>
public void <B>unsubscribe</B>(<A HREF="../../../rice/p2p/splitstream/SplitStreamClient.html" title="interface in rice.p2p.splitstream">SplitStreamClient</A>&nbsp;client)</PRE>
<DL>
<DD>Removes a client from this stripe - the client will no longer be informed whenever data arrives for this stripe
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>client</CODE> - The client to remove</DL>
</DD>
</DL>
<HR>
<A NAME="publish(byte[])"><!-- --></A><H3>
publish</H3>
<PRE>
public void <B>publish</B>(byte[]&nbsp;data)</PRE>
<DL>
<DD>Publishes the given data to this stripe
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>data</CODE> - The data to publish</DL>
</DD>
</DL>
<HR>
<A NAME="anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
anycast</H3>
<PRE>
public boolean <B>anycast</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD>This method is invoked when an anycast is received for a topic which this client is interested
in. The client should return whether or not the anycast should continue.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#anycast(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">anycast</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic the message was anycasted to<DD><CODE>content</CODE> - The content which was anycasted
<DT><B>Returns:</B><DD>Whether or not the anycast should continue</DL>
</DD>
</DL>
<HR>
<A NAME="deliver(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)"><!-- --></A><H3>
deliver</H3>
<PRE>
public void <B>deliver</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/scribe/ScribeContent.html" title="interface in rice.p2p.scribe">ScribeContent</A>&nbsp;content)</PRE>
<DL>
<DD>This method is invoked when a message is delivered for a topic this client is interested in.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#deliver(rice.p2p.scribe.Topic, rice.p2p.scribe.ScribeContent)">deliver</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic the message was published to<DD><CODE>content</CODE> - The content which was published</DL>
</DD>
</DL>
<HR>
<A NAME="childAdded(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
childAdded</H3>
<PRE>
public void <B>childAdded</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</PRE>
<DL>
<DD>Informs this client that a child was added to a topic in which it was interested in.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#childAdded(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">childAdded</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to unsubscribe from<DD><CODE>child</CODE> - The child that was added</DL>
</DD>
</DL>
<HR>
<A NAME="childRemoved(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)"><!-- --></A><H3>
childRemoved</H3>
<PRE>
public void <B>childRemoved</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic,
<A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;child)</PRE>
<DL>
<DD>Informs this client that a child was removed from a topic in which it was interested in.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#childRemoved(rice.p2p.scribe.Topic, rice.p2p.commonapi.NodeHandle)">childRemoved</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic to unsubscribe from<DD><CODE>child</CODE> - The child that was removed</DL>
</DD>
</DL>
<HR>
<A NAME="subscribeFailed(rice.p2p.scribe.Topic)"><!-- --></A><H3>
subscribeFailed</H3>
<PRE>
public void <B>subscribeFailed</B>(<A HREF="../../../rice/p2p/scribe/Topic.html" title="class in rice.p2p.scribe">Topic</A>&nbsp;topic)</PRE>
<DL>
<DD>Informs this client that a subscription failed
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html#subscribeFailed(rice.p2p.scribe.Topic)">subscribeFailed</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/scribe/ScribeClient.html" title="interface in rice.p2p.scribe">ScribeClient</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>topic</CODE> - The topic that failed</DL>
</DD>
</DL>
<HR>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
public java.lang.String <B>toString</B>()</PRE>
<DL>
<DD>Returns a String representation of this Stripe
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>A String representing this stripe</DL>
</DD>
</DL>
<HR>
<A NAME="getChildren()"><!-- --></A><H3>
getChildren</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>[] <B>getChildren</B>()</PRE>
<DL>
<DD>Utility method. Returns the list of children for this stripe.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>A array of children.</DL>
</DD>
</DL>
<HR>
<A NAME="getParent()"><!-- --></A><H3>
getParent</H3>
<PRE>
public <A HREF="../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A> <B>getParent</B>()</PRE>
<DL>
<DD>Utility method. Returns the parent for this topic in the scribe tree.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>Parent for this topic.</DL>
</DD>
</DL>
<HR>
<A NAME="isRoot()"><!-- --></A><H3>
isRoot</H3>
<PRE>
public boolean <B>isRoot</B>()</PRE>
<DL>
<DD>Utility method. Checks if local node is root for this topic.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>True/False depending on if local node is root for this topic</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/Stripe.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/splitstream/SplitStreamSubscribeContent.html" title="class in rice.p2p.splitstream"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/splitstream/StripeId.html" title="class in rice.p2p.splitstream"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/p2p/splitstream/Stripe.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="Stripe.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
<i>Copyright &#169; 2001-2005 - Rice Pastry.</i>
</BODY>
</HTML>