FreePastry/docs/javadoc/rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html

463 lines
22 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:15 CET 2009 -->
<TITLE>
SocketPastryNodeFactory.TLBootstrapper (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="SocketPastryNodeFactory.TLBootstrapper (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/SocketPastryNodeFactory.TLBootstrapper.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/pastry/socket/SocketPastryNodeFactory.html" title="class in rice.pastry.socket"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.TransLiveness.html" title="interface in rice.pastry.socket"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SocketPastryNodeFactory.TLBootstrapper.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.pastry.socket</FONT>
<BR>
Class SocketPastryNodeFactory.TLBootstrapper</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>rice.pastry.socket.SocketPastryNodeFactory.TLBootstrapper</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../rice/pastry/boot/Bootstrapper.html" title="interface in rice.pastry.boot">Bootstrapper</A>&lt;java.net.InetSocketAddress&gt;</DD>
</DL>
<DL>
<DT><B>Enclosing class:</B><DD><A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.html" title="class in rice.pastry.socket">SocketPastryNodeFactory</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>SocketPastryNodeFactory.TLBootstrapper</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../rice/pastry/boot/Bootstrapper.html" title="interface in rice.pastry.boot">Bootstrapper</A>&lt;java.net.InetSocketAddress&gt;</DL>
</PRE>
<P>
<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/pastry/socket/SocketNodeHandleFactory.html" title="class in rice.pastry.socket">SocketNodeHandleFactory</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#handleFactory">handleFactory</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/environment/logging/Logger.html" title="class in rice.environment.logging">Logger</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#logger">logger</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#pn">pn</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/pastry/standard/ProximityNeighborSelector.html" title="interface in rice.pastry.standard">ProximityNeighborSelector</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#pns">pns</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="../../../org/mpisws/p2p/transport/TransportLayer.html" title="interface in org.mpisws.p2p.transport">TransportLayer</A>&lt;<A HREF="../../../rice/pastry/socket/TransportLayerNodeHandle.html" title="class in rice.pastry.socket">TransportLayerNodeHandle</A>&lt;<A HREF="../../../org/mpisws/p2p/transport/multiaddress/MultiInetSocketAddress.html" title="class in org.mpisws.p2p.transport.multiaddress">MultiInetSocketAddress</A>&gt;,<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#tl">tl</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/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#SocketPastryNodeFactory.TLBootstrapper(rice.pastry.PastryNode, org.mpisws.p2p.transport.TransportLayer, rice.pastry.socket.SocketNodeHandleFactory, rice.pastry.standard.ProximityNeighborSelector)">SocketPastryNodeFactory.TLBootstrapper</A></B>(<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;pn,
<A HREF="../../../org/mpisws/p2p/transport/TransportLayer.html" title="interface in org.mpisws.p2p.transport">TransportLayer</A>&lt;<A HREF="../../../rice/pastry/socket/TransportLayerNodeHandle.html" title="class in rice.pastry.socket">TransportLayerNodeHandle</A>&lt;<A HREF="../../../org/mpisws/p2p/transport/multiaddress/MultiInetSocketAddress.html" title="class in org.mpisws.p2p.transport.multiaddress">MultiInetSocketAddress</A>&gt;,<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&gt;&nbsp;tl,
<A HREF="../../../rice/pastry/socket/SocketNodeHandleFactory.html" title="class in rice.pastry.socket">SocketNodeHandleFactory</A>&nbsp;handleFactory,
<A HREF="../../../rice/pastry/standard/ProximityNeighborSelector.html" title="interface in rice.pastry.standard">ProximityNeighborSelector</A>&nbsp;pns)</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/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#boot(java.util.Collection)">boot</A></B>(java.util.Collection&lt;java.net.InetSocketAddress&gt;&nbsp;bootaddresses_temp)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is a bit out of order to make it work on any thread.</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/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#bootAsBootstrap()">bootAsBootstrap</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/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#checkLiveness(rice.pastry.socket.SocketNodeHandle, java.util.Map)">checkLiveness</A></B>(<A HREF="../../../rice/pastry/socket/SocketNodeHandle.html" title="class in rice.pastry.socket">SocketNodeHandle</A>&nbsp;h,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</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/pastry/socket/SocketNodeHandle.html" title="class in rice.pastry.socket">SocketNodeHandle</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html#getTempNodeHandle(java.net.InetSocketAddress)">getTempNodeHandle</A></B>(java.net.InetSocketAddress&nbsp;addr)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Used as a helper to TLBootstrapper.boot() to generate a temporary node handle</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="pn"><!-- --></A><H3>
pn</H3>
<PRE>
protected <A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A> <B>pn</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="tl"><!-- --></A><H3>
tl</H3>
<PRE>
protected <A HREF="../../../org/mpisws/p2p/transport/TransportLayer.html" title="interface in org.mpisws.p2p.transport">TransportLayer</A>&lt;<A HREF="../../../rice/pastry/socket/TransportLayerNodeHandle.html" title="class in rice.pastry.socket">TransportLayerNodeHandle</A>&lt;<A HREF="../../../org/mpisws/p2p/transport/multiaddress/MultiInetSocketAddress.html" title="class in org.mpisws.p2p.transport.multiaddress">MultiInetSocketAddress</A>&gt;,<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&gt; <B>tl</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="handleFactory"><!-- --></A><H3>
handleFactory</H3>
<PRE>
protected <A HREF="../../../rice/pastry/socket/SocketNodeHandleFactory.html" title="class in rice.pastry.socket">SocketNodeHandleFactory</A> <B>handleFactory</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="pns"><!-- --></A><H3>
pns</H3>
<PRE>
protected <A HREF="../../../rice/pastry/standard/ProximityNeighborSelector.html" title="interface in rice.pastry.standard">ProximityNeighborSelector</A> <B>pns</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="logger"><!-- --></A><H3>
logger</H3>
<PRE>
protected <A HREF="../../../rice/environment/logging/Logger.html" title="class in rice.environment.logging">Logger</A> <B>logger</B></PRE>
<DL>
<DL>
</DL>
</DL>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="SocketPastryNodeFactory.TLBootstrapper(rice.pastry.PastryNode, org.mpisws.p2p.transport.TransportLayer, rice.pastry.socket.SocketNodeHandleFactory, rice.pastry.standard.ProximityNeighborSelector)"><!-- --></A><H3>
SocketPastryNodeFactory.TLBootstrapper</H3>
<PRE>
public <B>SocketPastryNodeFactory.TLBootstrapper</B>(<A HREF="../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;pn,
<A HREF="../../../org/mpisws/p2p/transport/TransportLayer.html" title="interface in org.mpisws.p2p.transport">TransportLayer</A>&lt;<A HREF="../../../rice/pastry/socket/TransportLayerNodeHandle.html" title="class in rice.pastry.socket">TransportLayerNodeHandle</A>&lt;<A HREF="../../../org/mpisws/p2p/transport/multiaddress/MultiInetSocketAddress.html" title="class in org.mpisws.p2p.transport.multiaddress">MultiInetSocketAddress</A>&gt;,<A HREF="../../../rice/p2p/commonapi/rawserialization/RawMessage.html" title="interface in rice.p2p.commonapi.rawserialization">RawMessage</A>&gt;&nbsp;tl,
<A HREF="../../../rice/pastry/socket/SocketNodeHandleFactory.html" title="class in rice.pastry.socket">SocketNodeHandleFactory</A>&nbsp;handleFactory,
<A HREF="../../../rice/pastry/standard/ProximityNeighborSelector.html" title="interface in rice.pastry.standard">ProximityNeighborSelector</A>&nbsp;pns)</PRE>
<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="bootAsBootstrap()"><!-- --></A><H3>
bootAsBootstrap</H3>
<PRE>
protected void <B>bootAsBootstrap</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="boot(java.util.Collection)"><!-- --></A><H3>
boot</H3>
<PRE>
public void <B>boot</B>(java.util.Collection&lt;java.net.InetSocketAddress&gt;&nbsp;bootaddresses_temp)</PRE>
<DL>
<DD>This method is a bit out of order to make it work on any thread. The method itself is non-blocking.
The problem is that we don't have any NodeHandles yet, only Ip addresses. So, we're going to check liveness on a
bogus node handle, and when the WrongEpochAddress message comes back, the bogus node will be faulty, but a new
node (the real NodeHandle at that address) will come alive. We can discover this by installing a LivenessListener
on the transport layer.
Here is what happens:
Create the "bogus" NodeHandles and store them in tempBootHandles
Register LivenessListener on transport layer.
Ping all of the "bogus" NodeHandles
When liveness changes to Non-Faulty it means we have found a new node.
When we collect all of the bootaddresses, or there is a timeout, we call continuation.receiveResult()
Continuation.receiveResult() unregisters the LivenessListener and then calls ProximityNeighborSelection.nearNodes()
PNS.nearNodes() calls into the continuation which calls PastryNode.doneNode()
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../rice/pastry/boot/Bootstrapper.html#boot(java.util.Collection)">boot</A></CODE> in interface <CODE><A HREF="../../../rice/pastry/boot/Bootstrapper.html" title="interface in rice.pastry.boot">Bootstrapper</A>&lt;java.net.InetSocketAddress&gt;</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getTempNodeHandle(java.net.InetSocketAddress)"><!-- --></A><H3>
getTempNodeHandle</H3>
<PRE>
protected <A HREF="../../../rice/pastry/socket/SocketNodeHandle.html" title="class in rice.pastry.socket">SocketNodeHandle</A> <B>getTempNodeHandle</B>(java.net.InetSocketAddress&nbsp;addr)</PRE>
<DL>
<DD>Used as a helper to TLBootstrapper.boot() to generate a temporary node handle
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>addr</CODE> -
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>
<A NAME="checkLiveness(rice.pastry.socket.SocketNodeHandle, java.util.Map)"><!-- --></A><H3>
checkLiveness</H3>
<PRE>
protected void <B>checkLiveness</B>(<A HREF="../../../rice/pastry/socket/SocketNodeHandle.html" title="class in rice.pastry.socket">SocketNodeHandle</A>&nbsp;h,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</PRE>
<DL>
<DD><DL>
</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/SocketPastryNodeFactory.TLBootstrapper.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/pastry/socket/SocketPastryNodeFactory.html" title="class in rice.pastry.socket"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../rice/pastry/socket/SocketPastryNodeFactory.TransLiveness.html" title="interface in rice.pastry.socket"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?rice/pastry/socket/SocketPastryNodeFactory.TLBootstrapper.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SocketPastryNodeFactory.TLBootstrapper.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>