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

573 lines
35 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:22 CET 2009 -->
<TITLE>
RendezvousApp (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="RendezvousApp (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/RendezvousApp.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/nat/rendezvous/PilotForwardMsg.html" title="class in rice.pastry.socket.nat.rendezvous"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousContactDirectStrategy.html" title="class in rice.pastry.socket.nat.rendezvous"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?rice/pastry/socket/nat/rendezvous/RendezvousApp.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="RendezvousApp.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.nat.rendezvous</FONT>
<BR>
Class RendezvousApp</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">rice.pastry.client.PastryAppl</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>rice.pastry.socket.nat.rendezvous.RendezvousApp</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousStrategy</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt;</DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>RendezvousApp</B><DT>extends <A HREF="../../../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A><DT>implements <A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousStrategy</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt;</DL>
</PRE>
<P>
TODO: make not abstract
<P>
<P>
<DL>
<DT><B>Author:</B></DT>
<DD>Jeff Hoye</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/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousApp.html#leafSet">leafSet</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/selector/SelectorManager.html" title="class in rice.selector">SelectorManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousApp.html#selectorManager">selectorManager</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/rendezvous/RendezvousTransportLayer.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousTransportLayer</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousApp.html#tl">tl</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_rice.pastry.client.PastryAppl"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class rice.pastry.client.<A HREF="../../../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../rice/pastry/client/PastryAppl.html#address">address</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#deserializer">deserializer</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#instance">instance</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#logger">logger</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#options">options</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#receiver">receiver</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#thePastryNode">thePastryNode</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.mpisws.p2p.transport.rendezvous.RendezvousStrategy"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface org.mpisws.p2p.transport.rendezvous.<A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousStrategy</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html#SUCCESS">SUCCESS</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousApp.html#RendezvousApp(rice.pastry.PastryNode)">RendezvousApp</A></B>(<A HREF="../../../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;pn)</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;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousApp.html#deliverWhenNotReady()">deliverWhenNotReady</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Instructs the MessageDispatch how to behave when the PastryNode is not ready.</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/pastry/socket/nat/rendezvous/RendezvousApp.html#isNatted(rice.p2p.commonapi.NodeHandle, rice.Continuation)">isNatted</A></B>(<A HREF="../../../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;bootstrap,
<A HREF="../../../../../rice/Continuation.html" title="interface in rice">Continuation</A>&lt;java.net.InetSocketAddress,java.lang.Exception&gt;&nbsp;receiveResult)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Can be called before you boot, will tell you if you are Firewalled.</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/pastry/socket/nat/rendezvous/RendezvousApp.html#messageForAppl(rice.pastry.messaging.Message)">messageForAppl</A></B>(<A HREF="../../../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If this is going to cause an infinite loop, just drop the message.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../rice/p2p/commonapi/Cancellable.html" title="interface in rice.p2p.commonapi">Cancellable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousApp.html#openChannel(rice.pastry.socket.nat.rendezvous.RendezvousSocketNodeHandle, rice.pastry.socket.nat.rendezvous.RendezvousSocketNodeHandle, rice.pastry.socket.nat.rendezvous.RendezvousSocketNodeHandle, int, rice.Continuation, java.util.Map)">openChannel</A></B>(<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&nbsp;target,
<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&nbsp;rendezvous,
<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&nbsp;source,
int&nbsp;uid,
<A HREF="../../../../../rice/Continuation.html" title="interface in rice">Continuation</A>&lt;java.lang.Integer,java.lang.Exception&gt;&nbsp;deliverAckToMe,
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;Calls ChannelOpener.openChannel(dest, credentials) on target
Possible exceptions to deliverResultToMe:
NodeIsFaultyException if target is faulty
UnableToConnectException if dest is faulty
Called by:
1) Rendezvous if the target and source are NATted
2) Source if target is NATted, but source isn't
Not called if the pilotFinder found a pilot for the target (in FreePastry this means that this will not be called
if the target is in the leafSet).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/mpisws/p2p/transport/MessageRequestHandle.html" title="interface in org.mpisws.p2p.transport">MessageRequestHandle</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>,java.nio.ByteBuffer&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousApp.html#sendMessage(rice.pastry.socket.nat.rendezvous.RendezvousSocketNodeHandle, java.nio.ByteBuffer, org.mpisws.p2p.transport.MessageCallback, java.util.Map)">sendMessage</A></B>(<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&nbsp;i,
java.nio.ByteBuffer&nbsp;m,
<A HREF="../../../../../org/mpisws/p2p/transport/MessageCallback.html" title="interface in org.mpisws.p2p.transport">MessageCallback</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>,java.nio.ByteBuffer&gt;&nbsp;deliverAckToMe,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;ops)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends the message via an out-of-band channel.</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/pastry/socket/nat/rendezvous/RendezvousApp.html#setTransportLayer(org.mpisws.p2p.transport.rendezvous.RendezvousTransportLayer)">setTransportLayer</A></B>(<A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousTransportLayer.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousTransportLayer</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt;&nbsp;tl)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousApp.html#toString()">toString</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_rice.pastry.client.PastryAppl"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class rice.pastry.client.<A HREF="../../../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../rice/pastry/client/PastryAppl.html#accept(rice.p2p.commonapi.appsocket.AppSocketReceiver)">accept</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#canReceiveSocket()">canReceiveSocket</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#connect(rice.p2p.commonapi.NodeHandle, rice.p2p.commonapi.appsocket.AppSocketReceiver, int)">connect</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#destroy()">destroy</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#enrouteMessage(rice.pastry.messaging.Message, rice.pastry.Id, rice.pastry.NodeHandle, rice.pastry.routing.SendOptions)">enrouteMessage</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#finishReceiveSocket(rice.p2p.commonapi.appsocket.AppSocket)">finishReceiveSocket</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#getAddress()">getAddress</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#getDeserializer()">getDeserializer</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#getLeafSet()">getLeafSet</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#getNodeHandle()">getNodeHandle</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#getNodeId()">getNodeId</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#getRoutingTable()">getRoutingTable</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#isClosest(rice.pastry.Id)">isClosest</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#leafSetChange(rice.pastry.NodeHandle, boolean)">leafSetChange</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#notifyReady()">notifyReady</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#receiveMessage(rice.pastry.messaging.Message)">receiveMessage</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#receiveMessageInternal(rice.pastry.messaging.RawMessageDelivery)">receiveMessageInternal</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#register()">register</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#routeMsg(rice.pastry.Id, rice.pastry.messaging.Message, rice.pastry.routing.SendOptions)">routeMsg</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#routeMsg(rice.pastry.Id, rice.pastry.messaging.Message, rice.pastry.routing.SendOptions, rice.p2p.commonapi.DeliveryNotification)">routeMsg</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#routeMsgDirect(rice.pastry.NodeHandle, rice.pastry.messaging.Message, rice.pastry.routing.SendOptions)">routeMsgDirect</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#routeSetChange(rice.pastry.NodeHandle, boolean)">routeSetChange</A>, <A HREF="../../../../../rice/pastry/client/PastryAppl.html#setDeserializer(rice.p2p.commonapi.rawserialization.MessageDeserializer)">setDeserializer</A></CODE></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="leafSet"><!-- --></A><H3>
leafSet</H3>
<PRE>
protected <A HREF="../../../../../rice/pastry/leafset/LeafSet.html" title="class in rice.pastry.leafset">LeafSet</A> <B>leafSet</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="selectorManager"><!-- --></A><H3>
selectorManager</H3>
<PRE>
protected <A HREF="../../../../../rice/selector/SelectorManager.html" title="class in rice.selector">SelectorManager</A> <B>selectorManager</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="tl"><!-- --></A><H3>
tl</H3>
<PRE>
protected <A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousTransportLayer.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousTransportLayer</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt; <B>tl</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="RendezvousApp(rice.pastry.PastryNode)"><!-- --></A><H3>
RendezvousApp</H3>
<PRE>
public <B>RendezvousApp</B>(<A HREF="../../../../../rice/pastry/PastryNode.html" title="class in rice.pastry">PastryNode</A>&nbsp;pn)</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="isNatted(rice.p2p.commonapi.NodeHandle, rice.Continuation)"><!-- --></A><H3>
isNatted</H3>
<PRE>
public void <B>isNatted</B>(<A HREF="../../../../../rice/p2p/commonapi/NodeHandle.html" title="class in rice.p2p.commonapi">NodeHandle</A>&nbsp;bootstrap,
<A HREF="../../../../../rice/Continuation.html" title="interface in rice">Continuation</A>&lt;java.net.InetSocketAddress,java.lang.Exception&gt;&nbsp;receiveResult)</PRE>
<DL>
<DD>Can be called before you boot, will tell you if you are Firewalled.
Should send a message to the bootstrap, who forwards it to another node who sends you the request back. Should
try UDP/TCP.
Returns your external address.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>bootstrap</CODE> - <DD><CODE>receiveResult</CODE> - </DL>
</DD>
</DL>
<HR>
<A NAME="messageForAppl(rice.pastry.messaging.Message)"><!-- --></A><H3>
messageForAppl</H3>
<PRE>
public void <B>messageForAppl</B>(<A HREF="../../../../../rice/pastry/messaging/Message.html" title="class in rice.pastry.messaging">Message</A>&nbsp;msg)</PRE>
<DL>
<DD>If this is going to cause an infinite loop, just drop the message.
The infinite loop is caused when the next hop is the destination of the message, and is NATted.
... and we're not connected?
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../rice/pastry/client/PastryAppl.html#messageForAppl(rice.pastry.messaging.Message)">messageForAppl</A></CODE> in class <CODE><A HREF="../../../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>msg</CODE> - the message that is arriving.</DL>
</DD>
</DL>
<HR>
<A NAME="deliverWhenNotReady()"><!-- --></A><H3>
deliverWhenNotReady</H3>
<PRE>
public boolean <B>deliverWhenNotReady</B>()</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../../rice/pastry/client/PastryAppl.html#deliverWhenNotReady()">PastryAppl</A></CODE></B></DD>
<DD>Instructs the MessageDispatch how to behave when the PastryNode is not ready.
An application can override this method to return true if it wishes to receive
messages before Pastry is ready().
Most applications should leave this as false, so that their application does
not have inconsistent routing. However Pastry's protocols (such as the join protocol)
need to receive messages before pastry is ready(). This is because they are attempting
to make pastry ready().
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../rice/pastry/client/PastryAppl.html#deliverWhenNotReady()">deliverWhenNotReady</A></CODE> in class <CODE><A HREF="../../../../../rice/pastry/client/PastryAppl.html" title="class in rice.pastry.client">PastryAppl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>false unless the node is a service</DL>
</DD>
</DL>
<HR>
<A NAME="openChannel(rice.pastry.socket.nat.rendezvous.RendezvousSocketNodeHandle, rice.pastry.socket.nat.rendezvous.RendezvousSocketNodeHandle, rice.pastry.socket.nat.rendezvous.RendezvousSocketNodeHandle, int, rice.Continuation, java.util.Map)"><!-- --></A><H3>
openChannel</H3>
<PRE>
public <A HREF="../../../../../rice/p2p/commonapi/Cancellable.html" title="interface in rice.p2p.commonapi">Cancellable</A> <B>openChannel</B>(<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&nbsp;target,
<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&nbsp;rendezvous,
<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&nbsp;source,
int&nbsp;uid,
<A HREF="../../../../../rice/Continuation.html" title="interface in rice">Continuation</A>&lt;java.lang.Integer,java.lang.Exception&gt;&nbsp;deliverAckToMe,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;options)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html#openChannel(Identifier, Identifier, Identifier, int, rice.Continuation, java.util.Map)">RendezvousStrategy</A></CODE></B></DD>
<DD>Calls ChannelOpener.openChannel(dest, credentials) on target
Possible exceptions to deliverResultToMe:
NodeIsFaultyException if target is faulty
UnableToConnectException if dest is faulty
Called by:
1) Rendezvous if the target and source are NATted
2) Source if target is NATted, but source isn't
Not called if the pilotFinder found a pilot for the target (in FreePastry this means that this will not be called
if the target is in the leafSet).
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html#openChannel(Identifier, Identifier, Identifier, int, rice.Continuation, java.util.Map)">openChannel</A></CODE> in interface <CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousStrategy</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt;</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>target</CODE> - call ChannelOpener.openChannel() on this Identifier<DD><CODE>rendezvous</CODE> - pass this to ChannelOpener.openChannel(), it's who the ChannelOpener will connect to<DD><CODE>deliverAckToMe</CODE> - notify me when success/failure
<DT><B>Returns:</B><DD>a way to cancel the request</DL>
</DD>
</DL>
<HR>
<A NAME="sendMessage(rice.pastry.socket.nat.rendezvous.RendezvousSocketNodeHandle, java.nio.ByteBuffer, org.mpisws.p2p.transport.MessageCallback, java.util.Map)"><!-- --></A><H3>
sendMessage</H3>
<PRE>
public <A HREF="../../../../../org/mpisws/p2p/transport/MessageRequestHandle.html" title="interface in org.mpisws.p2p.transport">MessageRequestHandle</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>,java.nio.ByteBuffer&gt; <B>sendMessage</B>(<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&nbsp;i,
java.nio.ByteBuffer&nbsp;m,
<A HREF="../../../../../org/mpisws/p2p/transport/MessageCallback.html" title="interface in org.mpisws.p2p.transport">MessageCallback</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>,java.nio.ByteBuffer&gt;&nbsp;deliverAckToMe,
java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;ops)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html#sendMessage(Identifier, java.nio.ByteBuffer, org.mpisws.p2p.transport.MessageCallback, java.util.Map)">RendezvousStrategy</A></CODE></B></DD>
<DD>Sends the message via an out-of-band channel. Usually routing.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html#sendMessage(Identifier, java.nio.ByteBuffer, org.mpisws.p2p.transport.MessageCallback, java.util.Map)">sendMessage</A></CODE> in interface <CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousStrategy</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt;</CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
public java.lang.String <B>toString</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="setTransportLayer(org.mpisws.p2p.transport.rendezvous.RendezvousTransportLayer)"><!-- --></A><H3>
setTransportLayer</H3>
<PRE>
public void <B>setTransportLayer</B>(<A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousTransportLayer.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousTransportLayer</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt;&nbsp;tl)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html#setTransportLayer(org.mpisws.p2p.transport.rendezvous.RendezvousTransportLayer)">setTransportLayer</A></CODE> in interface <CODE><A HREF="../../../../../org/mpisws/p2p/transport/rendezvous/RendezvousStrategy.html" title="interface in org.mpisws.p2p.transport.rendezvous">RendezvousStrategy</A>&lt;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousSocketNodeHandle.html" title="class in rice.pastry.socket.nat.rendezvous">RendezvousSocketNodeHandle</A>&gt;</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/RendezvousApp.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/nat/rendezvous/PilotForwardMsg.html" title="class in rice.pastry.socket.nat.rendezvous"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../rice/pastry/socket/nat/rendezvous/RendezvousContactDirectStrategy.html" title="class in rice.pastry.socket.nat.rendezvous"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?rice/pastry/socket/nat/rendezvous/RendezvousApp.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="RendezvousApp.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>