FreePastry/docs/javadoc/rice/p2p/splitstream/SplitStreamImpl.html

608 lines
26 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:00 CET 2009 -->
<TITLE>
SplitStreamImpl (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="SplitStreamImpl (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/SplitStreamImpl.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/SplitStreamContent.html" title="class in rice.p2p.splitstream"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/splitstream/SplitStreamScribePolicy.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/SplitStreamImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SplitStreamImpl.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 SplitStreamImpl</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>rice.p2p.splitstream.SplitStreamImpl</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../rice/Destructable.html" title="interface in rice">Destructable</A>, <A HREF="../../../rice/p2p/splitstream/SplitStream.html" title="interface in rice.p2p.splitstream">SplitStream</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>SplitStreamImpl</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../rice/p2p/splitstream/SplitStream.html" title="interface in rice.p2p.splitstream">SplitStream</A></DL>
</PRE>
<P>
This is the implementing class of the ISplitStream interface. It provides the functionality of
creating and attaching to channels. This class is responsible for handling all channels that a
local node is part of.
<P>
<P>
<DL>
<DT><B>Version:</B></DT>
<DD>$Id: SplitStreamImpl.java 4654 2009-01-08 16:33:07Z jeffh $</DD>
<DT><B>Author:</B></DT>
<DD>Ansley Post, Alan Mislove</DD>
</DL>
<HR>
<P>
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Hashtable&lt;<A HREF="../../../rice/p2p/splitstream/ChannelId.html" title="class in rice.p2p.splitstream">ChannelId</A>,<A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/SplitStreamImpl.html#channels">channels</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hashtable of all the channels currently created on this node implicitly or explicitly.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/SplitStreamImpl.html#defaultMaxChildren">defaultMaxChildren</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;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/SplitStreamImpl.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;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/SplitStreamImpl.html#maxFailedSubscriptions">maxFailedSubscriptions</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/SplitStreamImpl.html#node">node</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The node that this application is running on</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/SplitStreamImpl.html#scribe">scribe</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The scribe instance for this SplitStream Object</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/SplitStreamImpl.html#stripeBaseBitLength">stripeBaseBitLength</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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/SplitStreamImpl.html#SplitStreamImpl(rice.p2p.commonapi.Node, java.lang.String)">SplitStreamImpl</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;Convenience constructor which uses the default SplitStreamScribePolicy.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/SplitStreamImpl.html#SplitStreamImpl(rice.p2p.commonapi.Node, java.lang.String, rice.p2p.splitstream.SplitStreamScribePolicyFactory)">SplitStreamImpl</A></B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/splitstream/SplitStreamScribePolicyFactory.html" title="interface in rice.p2p.splitstream">SplitStreamScribePolicyFactory</A>&nbsp;factory)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The constructor for building the splitStream object which internally
creates it's own Scribe.</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;<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/SplitStreamImpl.html#attachChannel(rice.p2p.splitstream.ChannelId)">attachChannel</A></B>(<A HREF="../../../rice/p2p/splitstream/ChannelId.html" title="class in rice.p2p.splitstream">ChannelId</A>&nbsp;id)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is used by peers who wish to listen to content distributed by some other peer using
SplitStream.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&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/SplitStreamImpl.html#createChannel(rice.p2p.splitstream.ChannelId)">createChannel</A></B>(<A HREF="../../../rice/p2p/splitstream/ChannelId.html" title="class in rice.p2p.splitstream">ChannelId</A>&nbsp;id)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is used by a peer who wishes to distribute the content using SplitStream.</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/SplitStreamImpl.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>&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/SplitStreamImpl.html#getChannels()">getChannels</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns all of the channels on this local splitstream</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/splitstream/SplitStreamImpl.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/splitstream/SplitStreamScribePolicy.html" title="class in rice.p2p.splitstream">SplitStreamScribePolicy</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/p2p/splitstream/SplitStreamImpl.html#getPolicy()">getPolicy</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the policy used to control Scribe</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/SplitStreamImpl.html#getStripeBaseBitLength()">getStripeBaseBitLength</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ FIELD DETAIL =========== -->
<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="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 instance for this SplitStream Object
<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>
<DD>The node that this application is running on
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="channels"><!-- --></A><H3>
channels</H3>
<PRE>
protected java.util.Hashtable&lt;<A HREF="../../../rice/p2p/splitstream/ChannelId.html" title="class in rice.p2p.splitstream">ChannelId</A>,<A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A>&gt; <B>channels</B></PRE>
<DL>
<DD>Hashtable of all the channels currently created on this node implicitly or explicitly.
<P>
<DL>
</DL>
</DL>
<HR>
<A NAME="stripeBaseBitLength"><!-- --></A><H3>
stripeBaseBitLength</H3>
<PRE>
protected final int <B>stripeBaseBitLength</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="maxFailedSubscriptions"><!-- --></A><H3>
maxFailedSubscriptions</H3>
<PRE>
protected final int <B>maxFailedSubscriptions</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="defaultMaxChildren"><!-- --></A><H3>
defaultMaxChildren</H3>
<PRE>
protected final int <B>defaultMaxChildren</B></PRE>
<DL>
<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="SplitStreamImpl(rice.p2p.commonapi.Node, java.lang.String)"><!-- --></A><H3>
SplitStreamImpl</H3>
<PRE>
public <B>SplitStreamImpl</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>Convenience constructor which uses the default SplitStreamScribePolicy.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - <DD><CODE>instance</CODE> - </DL>
</DL>
<HR>
<A NAME="SplitStreamImpl(rice.p2p.commonapi.Node, java.lang.String, rice.p2p.splitstream.SplitStreamScribePolicyFactory)"><!-- --></A><H3>
SplitStreamImpl</H3>
<PRE>
public <B>SplitStreamImpl</B>(<A HREF="../../../rice/p2p/commonapi/Node.html" title="interface in rice.p2p.commonapi">Node</A>&nbsp;node,
java.lang.String&nbsp;instance,
<A HREF="../../../rice/p2p/splitstream/SplitStreamScribePolicyFactory.html" title="interface in rice.p2p.splitstream">SplitStreamScribePolicyFactory</A>&nbsp;factory)</PRE>
<DL>
<DD>The constructor for building the splitStream object which internally
creates it's own Scribe.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - the pastry node that we will use<DD><CODE>instance</CODE> - The instance name for this splitstream</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="createChannel(rice.p2p.splitstream.ChannelId)"><!-- --></A><H3>
createChannel</H3>
<PRE>
public <A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A> <B>createChannel</B>(<A HREF="../../../rice/p2p/splitstream/ChannelId.html" title="class in rice.p2p.splitstream">ChannelId</A>&nbsp;id)</PRE>
<DL>
<DD>This method is used by a peer who wishes to distribute the content using SplitStream. It
creates a Channel Object consisting of numStripes number of Stripes, one for each stripe's
content. A Channel object is responsible for implementing SplitStream functionality, like
maintaining multiple multicast trees, bandwidth management and discovering parents having spare
capacity. One Channel object should be created for each content distribution which wishes to
use SplitStream.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html#createChannel(rice.p2p.splitstream.ChannelId)">createChannel</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html" title="interface in rice.p2p.splitstream">SplitStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The id of the channel to create
<DT><B>Returns:</B><DD>an instance of a Channel class.</DL>
</DD>
</DL>
<HR>
<A NAME="attachChannel(rice.p2p.splitstream.ChannelId)"><!-- --></A><H3>
attachChannel</H3>
<PRE>
public <A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A> <B>attachChannel</B>(<A HREF="../../../rice/p2p/splitstream/ChannelId.html" title="class in rice.p2p.splitstream">ChannelId</A>&nbsp;id)</PRE>
<DL>
<DD>This method is used by peers who wish to listen to content distributed by some other peer using
SplitStream. It attaches the local node to the Channel which is being used by the source peer
to distribute the content. Essentially, this method finds out the different parameters of
Channel object which is created by the source, (the peer distributing the content) , and then
creates a local Channel object with these parameters and returns it. This is a non-blocking
call so the returned Channel object may not be initialized with all the parameters, so
applications should wait for channelIsReady() notification made by channels when they are
ready.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html#attachChannel(rice.p2p.splitstream.ChannelId)">attachChannel</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html" title="interface in rice.p2p.splitstream">SplitStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The id of the channel to create
<DT><B>Returns:</B><DD>An instance of Channel object.</DL>
</DD>
</DL>
<HR>
<A NAME="getChannels()"><!-- --></A><H3>
getChannels</H3>
<PRE>
public <A HREF="../../../rice/p2p/splitstream/Channel.html" title="class in rice.p2p.splitstream">Channel</A>[] <B>getChannels</B>()</PRE>
<DL>
<DD>Returns all of the channels on this local splitstream
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html#getChannels()">getChannels</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html" title="interface in rice.p2p.splitstream">SplitStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>All of the channels currently being received by this splitstream</DL>
</DD>
</DL>
<HR>
<A NAME="getPolicy()"><!-- --></A><H3>
getPolicy</H3>
<PRE>
public <A HREF="../../../rice/p2p/splitstream/SplitStreamScribePolicy.html" title="class in rice.p2p.splitstream">SplitStreamScribePolicy</A> <B>getPolicy</B>()</PRE>
<DL>
<DD>Returns the policy used to control Scribe
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The Scribe policy</DL>
</DD>
</DL>
<HR>
<A NAME="getStripeBaseBitLength()"><!-- --></A><H3>
getStripeBaseBitLength</H3>
<PRE>
public int <B>getStripeBaseBitLength</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html#getStripeBaseBitLength()">getStripeBaseBitLength</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html" title="interface in rice.p2p.splitstream">SplitStream</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getEnvironment()"><!-- --></A><H3>
getEnvironment</H3>
<PRE>
public <A HREF="../../../rice/environment/Environment.html" title="class in rice.environment">Environment</A> <B>getEnvironment</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html#getEnvironment()">getEnvironment</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html" title="interface in rice.p2p.splitstream">SplitStream</A></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><DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html#destroy()">destroy</A></CODE> in interface <CODE><A HREF="../../../rice/p2p/splitstream/SplitStream.html" title="interface in rice.p2p.splitstream">SplitStream</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/SplitStreamImpl.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/SplitStreamContent.html" title="class in rice.p2p.splitstream"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/p2p/splitstream/SplitStreamScribePolicy.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/SplitStreamImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SplitStreamImpl.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>