You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(123) |
Dec
(100) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(12) |
Feb
(80) |
Mar
(35) |
Apr
|
May
|
Jun
(28) |
Jul
(10) |
Aug
(6) |
Sep
|
Oct
|
Nov
(16) |
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
(8) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
(6) |
| 2009 |
Jan
(20) |
Feb
(1) |
Mar
(19) |
Apr
(12) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
|
From: Jonathan L. <le...@us...> - 2006-12-20 16:42:42
|
Update of /cvsroot/pyxida/Pyxida/web/javadoc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15221/web/javadoc Modified Files: allclasses-frame.html allclasses-noframe.html constant-values.html deprecated-list.html help-doc.html index.html overview-frame.html overview-summary.html overview-tree.html Log Message: web page updates Index: index.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/index.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** index.html 5 Dec 2006 03:19:06 -0000 1.4 --- index.html 20 Dec 2006 16:42:40 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc on Mon Dec 04 15:49:00 EST 2006--> <TITLE> Generated Documentation (Untitled) --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc on Wed Dec 20 11:24:32 EST 2006--> <TITLE> Generated Documentation (Untitled) Index: overview-frame.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/overview-frame.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** overview-frame.html 5 Dec 2006 03:19:06 -0000 1.4 --- overview-frame.html 20 Dec 2006 16:42:40 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> Overview --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> Overview Index: constant-values.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/constant-values.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** constant-values.html 5 Dec 2006 03:19:06 -0000 1.4 --- constant-values.html 20 Dec 2006 16:42:39 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> Constant Field Values --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> Constant Field Values Index: overview-summary.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/overview-summary.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** overview-summary.html 5 Dec 2006 03:19:06 -0000 1.4 --- overview-summary.html 20 Dec 2006 16:42:40 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> Overview --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> Overview Index: help-doc.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/help-doc.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** help-doc.html 5 Dec 2006 03:19:06 -0000 1.4 --- help-doc.html 20 Dec 2006 16:42:40 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> API Help --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> API Help Index: overview-tree.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/overview-tree.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** overview-tree.html 5 Dec 2006 03:19:06 -0000 1.4 --- overview-tree.html 20 Dec 2006 16:42:40 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> Class Hierarchy --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> Class Hierarchy *************** *** 88,96 **** <LI TYPE="circle">java.lang.Object<UL> <LI TYPE="circle">edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/APIManager.html" title="class in edu.harvard.syrah.pyxida.api"><B>APIManager</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>Coordinate</B></A> (implements java.io.Serializable) ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>EWMAStatistic</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="class in edu.harvard.syrah.pyxida.api"><B>ExternalAPI</B></A> (implements edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/ExternalAPIIF.html" title="interface in edu.harvard.syrah.pyxida.api">ExternalAPIIF</A>) <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>NCClient</B></A><T> (implements edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/NCClientIF.html" title="interface in edu.harvard.syrah.pyxida.nc.lib">NCClientIF</A>) ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/NCManager.html" title="class in edu.harvard.syrah.pyxida.nc"><B>NCManager</B></A><LI TYPE="circle">edu.harvard.syrah.sbon.comm.obj.ObjMessage (implements edu.harvard.syrah.sbon.comm.obj.ObjMessageIF) ! <UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>CoordRequestMsg</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>CoordResponseMsg</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/GossipRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>GossipRequestMsg</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/GossipResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>GossipResponseMsg</B></A></UL> <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/ObserverList.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>ObserverList</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.ping.<A HREF="edu/harvard/syrah/pyxida/ping/PingManager.html" title="class in edu.harvard.syrah.pyxida.ping"><B>PingManager</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.ping.<A HREF="edu/harvard/syrah/pyxida/ping/PingTCP.html" title="class in edu.harvard.syrah.pyxida.ping"><B>PingTCP</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.<A HREF="edu/harvard/syrah/pyxida/Pyxida.html" title="class in edu.harvard.syrah.pyxida"><B>Pyxida</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>RemoteState</B></A><T><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>Vec</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>WindowStatistic</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/XMLRPC_API.html" title="class in edu.harvard.syrah.pyxida.api"><B>XMLRPC_API</B></A> (implements edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/APIInstanceIF.html" title="interface in edu.harvard.syrah.pyxida.api">APIInstanceIF</A>) </UL> --- 88,107 ---- <LI TYPE="circle">java.lang.Object<UL> <LI TYPE="circle">edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/APIManager.html" title="class in edu.harvard.syrah.pyxida.api"><B>APIManager</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>Coordinate</B></A> (implements java.io.Serializable) ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>EWMAStatistic</B></A><LI TYPE="circle">HTTPCallbackHandler<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="class in edu.harvard.syrah.pyxida.api"><B>ExternalAPI</B></A> (implements edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/ExternalAPIIF.html" title="interface in edu.harvard.syrah.pyxida.api">ExternalAPIIF</A>) ! </UL> <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>NCClient</B></A><T> (implements edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/NCClientIF.html" title="interface in edu.harvard.syrah.pyxida.nc.lib">NCClientIF</A>) ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/NCManager.html" title="class in edu.harvard.syrah.pyxida.nc"><B>NCManager</B></A><LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/GossipRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>GossipRequestMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/GossipResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>GossipResponseMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>CoordRequestMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>CoordResponseMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/ProxyPingRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>ProxyPingRequestMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="edu/harvard/syrah/pyxida/nc/ProxyPingResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>ProxyPingResponseMsg</B></A></UL> <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/ObserverList.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>ObserverList</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.ping.<A HREF="edu/harvard/syrah/pyxida/ping/PingManager.html" title="class in edu.harvard.syrah.pyxida.ping"><B>PingManager</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.ping.<A HREF="edu/harvard/syrah/pyxida/ping/PingTCP.html" title="class in edu.harvard.syrah.pyxida.ping"><B>PingTCP</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.<A HREF="edu/harvard/syrah/pyxida/Pyxida.html" title="class in edu.harvard.syrah.pyxida"><B>Pyxida</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>RemoteState</B></A><T><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>Vec</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.lib.<A HREF="edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="class in edu.harvard.syrah.pyxida.nc.lib"><B>WindowStatistic</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/XMLRPC_API.html" title="class in edu.harvard.syrah.pyxida.api"><B>XMLRPC_API</B></A> (implements edu.harvard.syrah.pyxida.api.<A HREF="edu/harvard/syrah/pyxida/api/APIInstanceIF.html" title="interface in edu.harvard.syrah.pyxida.api">APIInstanceIF</A>) </UL> Index: deprecated-list.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/deprecated-list.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** deprecated-list.html 5 Dec 2006 03:19:06 -0000 1.4 --- deprecated-list.html 20 Dec 2006 16:42:39 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> Deprecated List --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> Deprecated List Index: allclasses-noframe.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/allclasses-noframe.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** allclasses-noframe.html 5 Dec 2006 03:19:06 -0000 1.4 --- allclasses-noframe.html 20 Dec 2006 16:42:39 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> All Classes --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> All Classes *************** *** 55,58 **** --- 55,62 ---- <A HREF="edu/harvard/syrah/pyxida/ping/PingTCP.html" title="class in edu.harvard.syrah.pyxida.ping">PingTCP</A> <BR> + <A HREF="edu/harvard/syrah/pyxida/nc/ProxyPingRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc">ProxyPingRequestMsg</A> + <BR> + <A HREF="edu/harvard/syrah/pyxida/nc/ProxyPingResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc">ProxyPingResponseMsg</A> + <BR> <A HREF="edu/harvard/syrah/pyxida/Pyxida.html" title="class in edu.harvard.syrah.pyxida">Pyxida</A> <BR> Index: allclasses-frame.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/allclasses-frame.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** allclasses-frame.html 5 Dec 2006 03:19:06 -0000 1.4 --- allclasses-frame.html 20 Dec 2006 16:42:39 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> All Classes --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> All Classes *************** *** 55,58 **** --- 55,62 ---- <A HREF="edu/harvard/syrah/pyxida/ping/PingTCP.html" title="class in edu.harvard.syrah.pyxida.ping" target="classFrame">PingTCP</A> <BR> + <A HREF="edu/harvard/syrah/pyxida/nc/ProxyPingRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc" target="classFrame">ProxyPingRequestMsg</A> + <BR> + <A HREF="edu/harvard/syrah/pyxida/nc/ProxyPingResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc" target="classFrame">ProxyPingResponseMsg</A> + <BR> <A HREF="edu/harvard/syrah/pyxida/Pyxida.html" title="class in edu.harvard.syrah.pyxida" target="classFrame">Pyxida</A> <BR> |
|
From: Jonathan L. <le...@us...> - 2006-12-20 16:42:42
|
Update of /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/nc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15221/web/javadoc/edu/harvard/syrah/pyxida/nc Modified Files: package-frame.html package-summary.html package-tree.html Log Message: web page updates Index: package-frame.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/nc/package-frame.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** package-frame.html 5 Dec 2006 03:19:06 -0000 1.4 --- package-frame.html 20 Dec 2006 16:42:40 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> edu.harvard.syrah.pyxida.nc --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> edu.harvard.syrah.pyxida.nc *************** *** 32,36 **** <A HREF="GossipResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc" target="classFrame">GossipResponseMsg</A> <BR> ! <A HREF="NCManager.html" title="class in edu.harvard.syrah.pyxida.nc" target="classFrame">NCManager</A></FONT></TD> </TR> </TABLE> --- 32,40 ---- <A HREF="GossipResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc" target="classFrame">GossipResponseMsg</A> <BR> ! <A HREF="NCManager.html" title="class in edu.harvard.syrah.pyxida.nc" target="classFrame">NCManager</A> ! <BR> ! <A HREF="ProxyPingRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc" target="classFrame">ProxyPingRequestMsg</A> ! <BR> ! <A HREF="ProxyPingResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc" target="classFrame">ProxyPingResponseMsg</A></FONT></TD> </TR> </TABLE> Index: package-summary.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/nc/package-summary.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** package-summary.html 5 Dec 2006 03:19:06 -0000 1.4 --- package-summary.html 20 Dec 2006 16:42:40 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> edu.harvard.syrah.pyxida.nc --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> edu.harvard.syrah.pyxida.nc *************** *** 107,110 **** --- 107,119 ---- <TD>Manages the local and proxy coordinates.</TD> </TR> + <TR BGCOLOR="white" CLASS="TableRowColor"> + <TD WIDTH="15%"><B><A HREF="../../../../../edu/harvard/syrah/pyxida/nc/ProxyPingRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc">ProxyPingRequestMsg</A></B></TD> + <TD>Requests the receiving node's current coordinate, confidence + and last update time.</TD> + </TR> + <TR BGCOLOR="white" CLASS="TableRowColor"> + <TD WIDTH="15%"><B><A HREF="../../../../../edu/harvard/syrah/pyxida/nc/ProxyPingResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc">ProxyPingResponseMsg</A></B></TD> + <TD>Response to ProxyPingRequestMsg.</TD> + </TR> </TABLE> Index: package-tree.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/nc/package-tree.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** package-tree.html 5 Dec 2006 03:19:06 -0000 1.4 --- package-tree.html 20 Dec 2006 16:42:40 -0000 1.5 *************** *** 3,7 **** <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Mon Dec 04 15:49:00 EST 2006 --> <TITLE> edu.harvard.syrah.pyxida.nc Class Hierarchy --- 3,7 ---- <HTML> <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Dec 20 11:24:32 EST 2006 --> <TITLE> edu.harvard.syrah.pyxida.nc Class Hierarchy *************** *** 88,94 **** <UL> <LI TYPE="circle">java.lang.Object<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/NCManager.html" title="class in edu.harvard.syrah.pyxida.nc"><B>NCManager</B></A><LI TYPE="circle">edu.harvard.syrah.sbon.comm.obj.ObjMessage (implements edu.harvard.syrah.sbon.comm.obj.ObjMessageIF) ! <UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>CoordRequestMsg</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>CoordResponseMsg</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/GossipRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>GossipRequestMsg</B></A><LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/GossipResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>GossipResponseMsg</B></A></UL> </UL> </UL> --- 88,103 ---- <UL> <LI TYPE="circle">java.lang.Object<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/NCManager.html" title="class in edu.harvard.syrah.pyxida.nc"><B>NCManager</B></A><LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/GossipResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>GossipResponseMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/ProxyPingRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>ProxyPingRequestMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>CoordResponseMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>CoordRequestMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/ProxyPingResponseMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>ProxyPingResponseMsg</B></A></UL> ! <LI TYPE="circle">ObjMessage<UL> ! <LI TYPE="circle">edu.harvard.syrah.pyxida.nc.<A HREF="../../../../../edu/harvard/syrah/pyxida/nc/GossipRequestMsg.html" title="class in edu.harvard.syrah.pyxida.nc"><B>GossipRequestMsg</B></A></UL> </UL> </UL> |
|
From: Jonathan L. <le...@us...> - 2006-12-20 16:42:42
|
Update of /cvsroot/pyxida/Pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15221 Modified Files: TODO Log Message: web page updates Index: TODO =================================================================== RCS file: /cvsroot/pyxida/Pyxida/TODO,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** TODO 8 Dec 2006 16:52:08 -0000 1.13 --- TODO 20 Dec 2006 16:42:39 -0000 1.14 *************** *** 5,8 **** --- 5,11 ---- - keep latest on PL in harvard_nc + - update script, what's on PL, and documentation to include Peter's xmlrpc change + - document script etc according to emails from Mohamed@inria + ###################################################################### V0.2 Proxy coordinates |
|
From: Jonathan L. <le...@us...> - 2006-12-20 16:02:57
|
Update of /cvsroot/pyxida/Pyxida/web/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32168/bin Log Message: Directory /cvsroot/pyxida/Pyxida/web/bin added to the repository |
|
From: Jonathan L. <le...@us...> - 2006-12-14 15:00:19
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1171/src/edu/harvard/syrah/pyxida/nc/lib Modified Files: NCClient.java Log Message: added isNaN error check to nclib Index: NCClient.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc/lib/NCClient.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** NCClient.java 4 Dec 2006 16:32:44 -0000 1.3 --- NCClient.java 14 Dec 2006 15:00:15 -0000 1.4 *************** *** 609,613 **** // happen again and again. // Note that error is checked and fixed in updateError() ! if (!sys_coord.isValid()) { System.err.println("Warning: resetting Vivaldi coordinate"); if (debugCrawler || SIMULATION) --- 609,613 ---- // happen again and again. // Note that error is checked and fixed in updateError() ! if (!sys_coord.isValid() || Double.isNaN(error)) { System.err.println("Warning: resetting Vivaldi coordinate"); if (debugCrawler || SIMULATION) *************** *** 616,620 **** } ! if (r_error <= 0. || r_error > MAX_ERROR || !_r_coord.isValid()) { if (debugCrawler) crawler_log.info(id + " BUSTED his coord is busted: r_error " + r_error + " r_coord " --- 616,621 ---- } ! if (r_error <= 0. || r_error > MAX_ERROR || Double.isNaN(r_error) || ! !_r_coord.isValid()) { if (debugCrawler) crawler_log.info(id + " BUSTED his coord is busted: r_error " + r_error + " r_coord " |
|
From: Peter P. <pr...@us...> - 2006-12-13 14:23:15
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18923/src/edu/harvard/syrah/pyxida/api Modified Files: ExternalAPI.java XMLRPC_API.java Log Message: Added support for an HTTP interface. If you go to http://nodename:55501 you'll get the current coord of the node. Note that XMLRPC requests now need to be directed to http://nodename:55501/xmlrpc -- prp Index: ExternalAPI.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/ExternalAPI.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ExternalAPI.java 6 Dec 2006 22:03:54 -0000 1.11 --- ExternalAPI.java 13 Dec 2006 14:23:12 -0000 1.12 *************** *** 6,9 **** --- 6,10 ---- import edu.harvard.syrah.prp.Log; + import edu.harvard.syrah.prp.NetUtil; import edu.harvard.syrah.pyxida.nc.NCManager; import edu.harvard.syrah.pyxida.nc.lib.Coordinate; *************** *** 13,19 **** import edu.harvard.syrah.sbon.comm.AddressFactory; import edu.harvard.syrah.sbon.comm.AddressIF; ! public class ExternalAPI implements ExternalAPIIF { private static final Log log = new Log(ExternalAPI.class); private NCManager ncManager; --- 14,33 ---- import edu.harvard.syrah.sbon.comm.AddressFactory; import edu.harvard.syrah.sbon.comm.AddressIF; + import edu.harvard.syrah.sbon.comm.http.HTTPCallbackHandler; ! public class ExternalAPI extends HTTPCallbackHandler implements ExternalAPIIF { private static final Log log = new Log(ExternalAPI.class); + + private static String HTTP_COORD_BEGIN = + "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" + + "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">" + + "<head>" + + "<title>Pyxida Node</title>" + + "</head>" + + "<body>"; + + private static String HTTP_COORD_END = + "</body>" + + "</html>"; private NCManager ncManager; *************** *** 189,191 **** --- 203,219 ---- } + @Override + protected void cb(CBResult result, AddressIF remoteAddr, String path, String requestData, + CB2<String, byte[]> cbResponse) { + + Coordinate coord = ncManager.getLocalCoord(); + + String response = + HTTP_COORD_BEGIN + + "<a href=\"http://pyxida.sourceforge.net\"><img style=\"float: left; \" alt=\"Pyxida Logo\" src=\"http://pyxida.sourceforge.net/img/pyxida4-scaled.jpg\"/></a>" + + "Local Network Coordinate: " + coord + "\n" + + HTTP_COORD_END; + cbResponse.call(result, "text/html", NetUtil.toHTTPBytes(response)); + } + } Index: XMLRPC_API.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/XMLRPC_API.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** XMLRPC_API.java 1 Dec 2006 17:19:51 -0000 1.4 --- XMLRPC_API.java 13 Dec 2006 14:23:12 -0000 1.5 *************** *** 1,4 **** --- 1,5 ---- package edu.harvard.syrah.pyxida.api; + import edu.harvard.syrah.prp.Log; import edu.harvard.syrah.sbon.async.Config; import edu.harvard.syrah.sbon.async.CallbacksIF.CB0; *************** *** 9,12 **** --- 10,14 ---- public class XMLRPC_API implements APIInstanceIF { + private static final Log log = new Log(XMLRPC_API.class); private static final String XMLRPC_OBJECT_NAME = "pyxida"; *************** *** 24,30 **** apiComm = new XMLRPCComm(); int port = Integer.parseInt(Config.getProperty("pyxida.api.port", "55501")); AddressIF apiAddress = AddressFactory.createServer(port); ! apiComm.registerHandler(XMLRPC_OBJECT_NAME, api); ! apiComm.initServer(apiAddress, cbDone); } --- 26,34 ---- apiComm = new XMLRPCComm(); int port = Integer.parseInt(Config.getProperty("pyxida.api.port", "55501")); + log.debug("Using port=" + port); AddressIF apiAddress = AddressFactory.createServer(port); ! apiComm.registerXMLRPCHandler(XMLRPC_OBJECT_NAME, api); ! apiComm.registerHandler("/", api); ! apiComm.initServer(apiAddress, cbDone); } |
|
From: Peter P. <pr...@us...> - 2006-12-13 14:23:15
|
Update of /cvsroot/pyxida/Pyxida/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18923/lib Modified Files: sbon-async.jar Log Message: Added support for an HTTP interface. If you go to http://nodename:55501 you'll get the current coord of the node. Note that XMLRPC requests now need to be directed to http://nodename:55501/xmlrpc -- prp Index: sbon-async.jar =================================================================== RCS file: /cvsroot/pyxida/Pyxida/lib/sbon-async.jar,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 Binary files /tmp/cvs4AUwvs and /tmp/cvsTvsCy3 differ |
|
From: Jonathan L. <le...@us...> - 2006-12-08 16:52:17
|
Update of /cvsroot/pyxida/Pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12784 Modified Files: TODO Log Message: progress with proxy coords Index: TODO =================================================================== RCS file: /cvsroot/pyxida/Pyxida/TODO,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** TODO 6 Dec 2006 22:03:54 -0000 1.12 --- TODO 8 Dec 2006 16:52:08 -0000 1.13 *************** *** 2,6 **** V0.1 OVERLAY NCs - - change return values for XML calls to strings so that errors can be diagnosed. - modify script so that it uses default ports - keep latest on PL in harvard_nc --- 2,5 ---- *************** *** 9,13 **** V0.2 Proxy coordinates ! - redesign pinger so that >1 pings work ###################################################################### --- 8,13 ---- V0.2 Proxy coordinates ! - change PingManager to fail over to TCP Syns if ICMP fails for a particular IP address ! - fix estimateRTT to include barrier and support proxy coords ###################################################################### |
|
From: Jonathan L. <le...@us...> - 2006-12-08 16:52:17
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12784/src/edu/harvard/syrah/pyxida/nc Modified Files: NCManager.java Log Message: progress with proxy coords Index: NCManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc/NCManager.java,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** NCManager.java 6 Dec 2006 22:56:24 -0000 1.25 --- NCManager.java 8 Dec 2006 16:52:09 -0000 1.26 *************** *** 133,137 **** if (!Pyxida.USE_ICMP) return "Proxy coords require ICMP"; if (addr2proxyClient.containsKey(remoteNode)) { ! String error = "Not creating proxy coord for "+remoteNode+ " because one already exists"; log.debug(error); --- 133,137 ---- if (!Pyxida.USE_ICMP) return "Proxy coords require ICMP"; if (addr2proxyClient.containsKey(remoteNode)) { ! String error = "Not creating proxy coord for "+remoteNode.toString(false)+ " because one already exists"; log.debug(error); *************** *** 141,145 **** addr2proxyClient.put(remoteNode,client); client.init(); ! String res = "Created proxy coord for"+remoteNode; log.debug(res); return res; --- 141,145 ---- addr2proxyClient.put(remoteNode,client); client.init(); ! String res = "Created proxy coord for "+remoteNode.toString(false); log.debug(res); return res; *************** *** 175,182 **** ProxyClient proxyCoord = addr2proxyClient.remove(remoteNode); if (proxyCoord == null) { ! String error = "No proxy coord for "+remoteNode+" found"; log.debug(error); return error; } return "Success"; } --- 175,183 ---- ProxyClient proxyCoord = addr2proxyClient.remove(remoteNode); if (proxyCoord == null) { ! String error = "No proxy coord for "+remoteNode.toString(false)+" found"; log.debug(error); return error; } + proxyCoord.expire(); return "Success"; } *************** *** 253,257 **** case TIMEOUT: case ERROR: { ! String error = "Coord request to "+nodeB+" failed:"+ resultB.toString(); log.warn(error); cbDistance.call(resultB, new Double(0), error); --- 254,259 ---- case TIMEOUT: case ERROR: { ! String error = "Coord request to "+nodeB.toString(false) ! +" failed:"+ resultB.toString(); log.warn(error); cbDistance.call(resultB, new Double(0), error); *************** *** 265,269 **** case TIMEOUT: case ERROR: { ! String error = "Coord request to "+nodeA+" failed:"+ resultA.toString(); cbDistance.call(resultA, new Double(0), error); break; --- 267,272 ---- case TIMEOUT: case ERROR: { ! String error = "Coord request to "+nodeA.toString(false) ! +" failed:"+ resultA.toString(); cbDistance.call(resultA, new Double(0), error); break; *************** *** 312,316 **** AddressIF remoteAddr, Long ts, final CB1<Boolean> cbHandled) { ! log.debug("in GossipHandler cb: " + msg); // we just heard from him so we know he is up addUpNeighbor(remoteAddr); --- 315,319 ---- AddressIF remoteAddr, Long ts, final CB1<Boolean> cbHandled) { ! log.debug("in GossipHandler cb"); // we just heard from him so we know he is up addUpNeighbor(remoteAddr); *************** *** 469,473 **** public CoordClient() { ! log.warn("coordclient ctor"); nc = new NCClient<AddressIF>(NCManager.NC_NUM_DIMS); --- 472,476 ---- public CoordClient() { ! log.debug("Making a CoordClient"); nc = new NCClient<AddressIF>(NCManager.NC_NUM_DIMS); *************** *** 614,617 **** --- 617,624 ---- void update() { + if (hasExpired()) { + return; + } + registerTimer(); final AddressIF neighbor = pickGossipNode(); *************** *** 660,664 **** // prp: Don't know but if you want to clone it, use the copy constructor addr = AddressFactory.create(_addr); ! log.warn("proxyclient ctor "+addr); } --- 667,671 ---- // prp: Don't know but if you want to clone it, use the copy constructor addr = AddressFactory.create(_addr); ! log.debug("Making a ProxyClient "+addr); } *************** *** 674,679 **** --- 681,691 ---- } + public void expire () { + lease = 0; + } + public boolean hasExpired() { if (System.currentTimeMillis() > lease) { + log.debug("ProxyClient "+addr+" has expired"); return true; } |
|
From: Jonathan L. <le...@us...> - 2006-12-08 16:52:17
|
Update of /cvsroot/pyxida/Pyxida/web In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12784/web Modified Files: index.html Log Message: progress with proxy coords Index: index.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/index.html,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** index.html 5 Dec 2006 10:34:12 -0000 1.12 --- index.html 8 Dec 2006 16:52:09 -0000 1.13 *************** *** 202,207 **** --- 202,258 ---- <li>proxy coordinates (targeted for v0.2): create a coordinate for a non-overlay node.</li> + <li>add application-level coordinates for improved stability </ul> + <p><b>Logging and Log Files</b> + + <p> + Logging levels for particular classes and subtrees can be set + in the <i>config/log.config</i> file.<BR> + E.g. <tt>edu.harvard.syrah.pyxida.level = DEBUG</tt> + + + Setting this to DEBUG will produce a lot of output. We + suggest INFO, which will produce a periodic summary. + + <p> + The basic format of the logs is:<BR> + <code>DEBUG/INFO/WARNING/ERROR timestamp java-class : message</code><BR> + e.g. <code>DE 1165381552727 NCManager : setting timer to 9477</code><BR> + + <p> + Each network coordinate summarizes its behavior with lines of + the form:<BR> + + <code> + update: [sc=[11.498,-69.529,14.73,16.269,h19.323],<BR> + ac=[6.827,-41.283,8.746,9.66,h11.473],<BR> + er=0.675,sys_re50=0.454,sys_re95=1,app_re50=0.672,app_re95=1.93,<BR> + sys_dd=1.256,app_dd=5.455,ne=2.025,rd=0,<BR> + sf=5205.779,af=5205.779,rrl=0.278,narl=0.212,ralp=0.338,<BR> + age=3,vl=72,gr=0.007,nn=96.6] + </code> + + <p> + The format of these update lines is:<BR> + sc: system-level coordinate<BR> + ac: app-level coordinate (see our ICDCS/WORLDS papers about this)<BR> + er: Vivaldi error/confidence (an EWMA)<BR> + sys_re50 = median (50th pctl) of the distribution of relative errors for the recent past<BR> + sys_re95 = 95th pctl of this distribution<BR> + app_* = same but for app-level coordinate (however, they are not fully functional in our current version)<BR> + sys_dd = sys-level coordinate change per update (distance delta)<BR> + sf = avg number of milliseconds between updates<BR> + nn = distance to nearest neighbor<BR> + rrl = Lua's relative rank loss<BR> + narl and ralp are two metrics from our ICDCS and WORLDS papers<BR> + gr = the pull of gravity<BR> + + <p> + Typically the place to start is <code>sys_re50</code>. + On the Internet, the median of the distribution of these + values should range between 8-20% depending on the particular + set of machines you are using. + <table width="100%" bgcolor="#9EB0FF" valign="top"> <tr> *************** *** 223,226 **** --- 274,278 ---- </ul> + <table width="100%" bgcolor="#9EB0FF" valign="top"> <tr> |
|
From: Jonathan L. <le...@us...> - 2006-12-08 16:52:17
|
Update of /cvsroot/pyxida/Pyxida/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12784/bin Modified Files: proxy.pl query.pl Log Message: progress with proxy coords Index: proxy.pl =================================================================== RCS file: /cvsroot/pyxida/Pyxida/bin/proxy.pl,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** proxy.pl 6 Dec 2006 22:03:54 -0000 1.3 --- proxy.pl 8 Dec 2006 16:52:08 -0000 1.4 *************** *** 40,47 **** } elsif (defined($para{'d'})) { my $res = $server->call("pyxida.destroyProxyCoord",$para{'d'}); ! &outputBoolean($res); } elsif (defined($para{'r'})) { my $res = $server->call("pyxida.renewProxyCoord",$para{'r'},$lease); ! &outputBoolean($res); } else { die ("Missing arguments\n$usage"); --- 40,49 ---- } elsif (defined($para{'d'})) { my $res = $server->call("pyxida.destroyProxyCoord",$para{'d'}); ! print Dumper($res); ! #&outputBoolean($res); } elsif (defined($para{'r'})) { my $res = $server->call("pyxida.renewProxyCoord",$para{'r'},$lease); ! print Dumper($res); ! #&outputBoolean($res); } else { die ("Missing arguments\n$usage"); Index: query.pl =================================================================== RCS file: /cvsroot/pyxida/Pyxida/bin/query.pl,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** query.pl 5 Dec 2006 15:47:56 -0000 1.6 --- query.pl 8 Dec 2006 16:52:08 -0000 1.7 *************** *** 13,16 **** --- 13,17 ---- $usage .= " -l: get local coordinate of node running at url\n"; $usage .= " -r remote-node: get remote overlay node coordinate\n"; + $usage .= " -p proxy-node: get proxy coord that is stored on contacted node\n"; $usage .= " -a nodeA -b nodeB: estimate latency btw overlay nodes A and B\n"; |
|
From: Peter P. <pr...@us...> - 2006-12-07 11:46:19
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/ping In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27417/src/edu/harvard/syrah/pyxida/ping Modified Files: TCPSynPinger.java ICMPPinger.java JpcapPinger.java Log Message: Redesigned the Jpcap code to handle multiple concurrent pings Index: ICMPPinger.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/ping/ICMPPinger.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ICMPPinger.java 1 Dec 2006 18:10:54 -0000 1.10 --- ICMPPinger.java 7 Dec 2006 11:46:17 -0000 1.11 *************** *** 24,55 **** public void ping(AddressIF remoteNode, final CB1<Double> cbPing) throws UnsupportedOperationException { log.debug("Sending new ping to remoteNode=" + remoteNode + " using ICMP"); - final JpcapPingData pd = new JpcapPingData(); - pd.pingAddr = remoteNode; - pd.packetType = ICMPPacket.class; ! pd.cbDone = new CB0(PING_TIMEOUT) { ! protected void cb(CBResult result) { ! switch (result.state) { ! case OK : { ! log.debug("pd.recvPacket=" + pd.recvPacket); ! pd.recvTS = parseICMP(pd.recvPacket); ! assert pd.sendTS > 0; ! assert pd.recvTS > pd.sendTS : "send TS > recv TS ?"; ! long lat = pd.recvTS - pd.sendTS; ! log.debug("lat=" + lat + " pd.recvTS=" + pd.recvTS); ! cbPing.call(result, lat / 1000.0); ! break; ! } ! case TIMEOUT: ! case ERROR: { ! removeRequest(); ! cbPing.call(result, 0.0); ! break; ! } ! } ! } ! }; ! ! addRequest(pd); pd.sendPacket = createICMP(pd.pingAddr); --- 24,30 ---- public void ping(AddressIF remoteNode, final CB1<Double> cbPing) throws UnsupportedOperationException { log.debug("Sending new ping to remoteNode=" + remoteNode + " using ICMP"); ! JpcapPingData pd = addJpcapRequest(remoteNode, cbPing); ! pd.packetType = ICMPPacket.class; pd.sendPacket = createICMP(pd.pingAddr); *************** *** 91,95 **** } ! private long parseICMP(Packet p) { log.debug("p=" + p + " p.class=" + (p != null ? p.getClass() : null)); --- 66,70 ---- } ! protected long parsePacket(Packet p) { log.debug("p=" + p + " p.class=" + (p != null ? p.getClass() : null)); Index: TCPSynPinger.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/ping/TCPSynPinger.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** TCPSynPinger.java 24 Nov 2006 13:58:57 -0000 1.7 --- TCPSynPinger.java 7 Dec 2006 11:46:17 -0000 1.8 *************** *** 1,8 **** package edu.harvard.syrah.pyxida.ping; ! import jpcap.packet.EthernetPacket; ! import jpcap.packet.IPPacket; ! import jpcap.packet.Packet; ! import jpcap.packet.TCPPacket; import edu.harvard.syrah.prp.ANSI; import edu.harvard.syrah.prp.Log; --- 1,5 ---- package edu.harvard.syrah.pyxida.ping; ! import jpcap.packet.*; import edu.harvard.syrah.prp.ANSI; import edu.harvard.syrah.prp.Log; *************** *** 27,60 **** public void ping(AddressIF remoteNode, final CB1<Double> cbPing) throws UnsupportedOperationException { log.debug("Sending new ping to remoteNode=" + remoteNode + ":" + PING_DST_PORT + " using TCPSyn"); ! final JpcapPingData pd = new JpcapPingData(); ! pd.pingAddr = remoteNode; ! ! pd.cbDone = new CB0(PING_TIMEOUT) { ! protected void cb(CBResult result) { ! switch (result.state) { ! case OK : { ! log.debug("pd.recvPacket=" + pd.recvPacket); ! processTCP(pd); ! assert pd.sendTS > 0; ! assert pd.recvTS > pd.sendTS : "send TS (" + pd.sendTS + ") > recv TS (" + pd.recvTS + ")?"; ! long lat = pd.recvTS - pd.sendTS; ! log.debug("lat=" + lat + " pd.recvTS=" + pd.recvTS); ! ! removeRequest(); ! cbPing.call(result, lat / 1000.0); ! break; ! } ! case TIMEOUT: ! case ERROR: { ! removeRequest(); ! cbPing.call(result, 0.0); ! break; ! } ! } ! } ! }; ! ! addRequest(pd); sendTCPSyn(pd); } --- 24,34 ---- public void ping(AddressIF remoteNode, final CB1<Double> cbPing) throws UnsupportedOperationException { log.debug("Sending new ping to remoteNode=" + remoteNode + ":" + PING_DST_PORT + " using TCPSyn"); ! JpcapPingData pd = addJpcapRequest(remoteNode, cbPing); ! pd.packetType = TCPPacket.class; sendTCPSyn(pd); + + /* + * We don't need to send a rst here because the kernel does it for us. + */ } *************** *** 102,119 **** */ ! private void processTCP(JpcapPingData pd) { ! Packet p = pd.recvPacket; log.debug("p=" + p + " p.class=" + (p != null ? p.getClass() : null)); TCPPacket tcp = (TCPPacket) p; long sec = p.sec; long usec = p.usec; ! pd.recvTS = (sec * 1000 * 1000) + usec; ! log.debug("recvTS=" + pd.recvTS); ! ! /* ! * We don't need to send a rst here because the kernel does it for us. ! */ } --- 76,92 ---- */ ! protected long parsePacket(Packet p) { log.debug("p=" + p + " p.class=" + (p != null ? p.getClass() : null)); + long recvTS = Long.MIN_VALUE; TCPPacket tcp = (TCPPacket) p; long sec = p.sec; long usec = p.usec; ! log.debug("ICMP_ECHOREPLY: " + tcp.src_ip + " sec=" + sec + " usec=" + usec); ! recvTS = (sec * 1000 * 1000) + usec; ! log.debug("recvTS=" + recvTS); ! ! return recvTS; } Index: JpcapPinger.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/ping/JpcapPinger.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** JpcapPinger.java 1 Dec 2006 18:10:54 -0000 1.5 --- JpcapPinger.java 7 Dec 2006 11:46:17 -0000 1.6 *************** *** 6,10 **** import java.net.InetAddress; import java.net.MalformedURLException; ! import java.util.Arrays; import jpcap.JpcapCaptor; --- 6,10 ---- import java.net.InetAddress; import java.net.MalformedURLException; ! import java.util.*; import jpcap.JpcapCaptor; *************** *** 17,22 **** --- 17,24 ---- import edu.harvard.syrah.prp.Log; import edu.harvard.syrah.prp.POut; + import edu.harvard.syrah.sbon.async.CBResult; import edu.harvard.syrah.sbon.async.EventLoop; import edu.harvard.syrah.sbon.async.CallbacksIF.CB0; + import edu.harvard.syrah.sbon.async.CallbacksIF.CB1; import edu.harvard.syrah.sbon.comm.AddressFactory; import edu.harvard.syrah.sbon.comm.AddressIF; *************** *** 56,60 **** } ! private static JpcapPingData currentPing; public void init(AddressIF defaultPingAddr, final CB0 cbDone) { --- 58,62 ---- } ! private static List<JpcapPingData> currentPingList = Collections.synchronizedList(new ArrayList<JpcapPingData>()); public void init(AddressIF defaultPingAddr, final CB0 cbDone) { *************** *** 170,180 **** protected void addRequest(JpcapPingData pd) { - // Assume that there's not other ping that is waiting for a response - assert JpcapPinger.currentPing == null; - JpcapPinger.currentPing = pd; } ! protected void removeRequest() { ! JpcapPinger.currentPing = null; } --- 172,180 ---- protected void addRequest(JpcapPingData pd) { } ! protected void removeRequest(JpcapPingData pd) { ! boolean found = currentPingList.remove(pd); ! assert found : "PingData pd=" + pd + " not found in list: " + currentPingList; } *************** *** 183,204 **** //captor.setFilter("icmp", true); ! while (!jpcapThread.isInterrupted()) { ! IPPacket ip = null; ! do { ! /* ! * TODO is this a busy wait? ! */ ! log.debug("Waiting for a packet..."); ! ip = (IPPacket) captor.getPacket(); ! log.debug("Captured a packet: ip=" + ip + " src=" + ip.src_ip); ! } while (currentPing == null || ip.getClass() != currentPing.packetType || !ip.src_ip.equals(currentPing.pingAddr.getInetAddress())); ! ! currentPing.recvPacket = ip; ! ! log.debug("Received packet: " + currentPing.recvPacket); ! EventLoop.get().registerTimerCB(currentPing.cbDone); ! currentPing = null; } } } --- 183,243 ---- //captor.setFilter("icmp", true); ! while (!jpcapThread.isInterrupted()) { ! IPPacket ip = null; ! while(true) { ! /* ! * TODO is this a busy wait? ! */ ! log.debug("Waiting for a packet..."); ! ip = (IPPacket) captor.getPacket(); ! log.debug("Captured a packet from src=" + ip.src_ip); ! ! synchronized(currentPingList) { ! for (Iterator<JpcapPingData> it = currentPingList.iterator(); it.hasNext();) { ! JpcapPingData currentPing = it.next(); ! if (ip.getClass() == currentPing.packetType && ip.src_ip.equals(currentPing.pingAddr.getInetAddress())) { ! it.remove(); ! currentPing.recvPacket = ip; ! log.debug("Found a matching ping request"); ! EventLoop.get().registerTimerCB(currentPing.cbDone); ! } ! } ! } ! } ! } ! } ! ! public JpcapPingData addJpcapRequest(AddressIF remoteNode, final CB1<Double> cbPing) { ! final JpcapPingData pd = new JpcapPingData(); ! pd.pingAddr = remoteNode; ! ! pd.cbDone = new CB0(PING_TIMEOUT) { ! protected void cb(CBResult result) { ! switch (result.state) { ! case OK : { ! log.debug("pd.recvPacket=" + pd.recvPacket); ! pd.recvTS = parsePacket(pd.recvPacket); ! assert pd.sendTS > 0; ! assert pd.recvTS > pd.sendTS : "send TS > recv TS ?"; ! long lat = pd.recvTS - pd.sendTS; ! log.debug("lat=" + lat + " pd.recvTS=" + pd.recvTS); ! cbPing.call(result, lat / 1000.0); ! break; ! } ! case TIMEOUT: ! case ERROR: { ! removeRequest(pd); ! cbPing.call(result, 0.0); ! break; ! } } + } + }; + + currentPingList.add(pd); + return pd; } + protected abstract long parsePacket(Packet p); + } |
|
From: Peter P. <pr...@us...> - 2006-12-06 22:56:36
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10144/src/edu/harvard/syrah/pyxida/nc Modified Files: NCManager.java Log Message: Removed ANSI colour from string that is returned by xmlrpc Index: NCManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc/NCManager.java,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** NCManager.java 6 Dec 2006 22:03:54 -0000 1.24 --- NCManager.java 6 Dec 2006 22:56:24 -0000 1.25 *************** *** 149,153 **** ProxyClient proxyCoord = addr2proxyClient.get(remoteNode); if (proxyCoord == null) { ! String error = "No proxy coord for "+remoteNode+" found"; log.debug(error); return error; --- 149,153 ---- ProxyClient proxyCoord = addr2proxyClient.get(remoteNode); if (proxyCoord == null) { ! String error = "No proxy coord for " + remoteNode.toString(false) + " found"; log.debug(error); return error; |
|
From: Jonathan L. <le...@us...> - 2006-12-06 22:04:29
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23067/src/edu/harvard/syrah/pyxida/nc Modified Files: NCManager.java Log Message: problem with return XML values Index: NCManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc/NCManager.java,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** NCManager.java 5 Dec 2006 19:01:29 -0000 1.23 --- NCManager.java 6 Dec 2006 22:03:54 -0000 1.24 *************** *** 14,17 **** --- 14,18 ---- import edu.harvard.syrah.sbon.async.CallbacksIF.CB0; import edu.harvard.syrah.sbon.async.CallbacksIF.CB1; + import edu.harvard.syrah.sbon.async.CallbacksIF.CB2; import edu.harvard.syrah.sbon.comm.AddressFactory; import edu.harvard.syrah.sbon.comm.AddressIF; *************** *** 129,154 **** /** */ ! public boolean createProxyCoord(AddressIF remoteNode, long lease) { ! if (!Pyxida.USE_ICMP) return false; if (addr2proxyClient.containsKey(remoteNode)) { ! log.debug("Not creating proxy coord for "+remoteNode+ ! " because one already exists"); ! return false; } - log.warn("createProxyCoord for "+remoteNode); ProxyClient client = new ProxyClient(remoteNode,lease); addr2proxyClient.put(remoteNode,client); client.init(); ! return true; } ! public boolean renewLeaseOnProxyCoord(AddressIF remoteNode, long lease) { ProxyClient proxyCoord = addr2proxyClient.get(remoteNode); if (proxyCoord == null) { ! log.debug("No proxy coord for "+remoteNode+" found"); ! return false; } proxyCoord.renewLease(lease); ! return true; } --- 130,158 ---- /** */ ! public String createProxyCoord(AddressIF remoteNode, long lease) { ! if (!Pyxida.USE_ICMP) return "Proxy coords require ICMP"; if (addr2proxyClient.containsKey(remoteNode)) { ! String error = "Not creating proxy coord for "+remoteNode+ ! " because one already exists"; ! log.debug(error); ! return error; } ProxyClient client = new ProxyClient(remoteNode,lease); addr2proxyClient.put(remoteNode,client); client.init(); ! String res = "Created proxy coord for"+remoteNode; ! log.debug(res); ! return res; } ! public String renewLeaseOnProxyCoord(AddressIF remoteNode, long lease) { ProxyClient proxyCoord = addr2proxyClient.get(remoteNode); if (proxyCoord == null) { ! String error = "No proxy coord for "+remoteNode+" found"; ! log.debug(error); ! return error; } proxyCoord.renewLease(lease); ! return "Success"; } *************** *** 166,178 **** /** ! * @return true if proxy coordinate existed for remoteNode */ ! public boolean destroyProxyCoord(AddressIF remoteNode) { ProxyClient proxyCoord = addr2proxyClient.remove(remoteNode); if (proxyCoord == null) { ! log.debug("No proxy coord for "+remoteNode+" found"); ! return false; } ! return true; } --- 170,183 ---- /** ! * @return result of proxy coordinate removal */ ! public String destroyProxyCoord(AddressIF remoteNode) { ProxyClient proxyCoord = addr2proxyClient.remove(remoteNode); if (proxyCoord == null) { ! String error = "No proxy coord for "+remoteNode+" found"; ! log.debug(error); ! return error; } ! return "Success"; } *************** *** 221,225 **** */ public void estimateRTT(final AddressIF nodeA, final AddressIF nodeB, ! final CB1<Double> cbDistance) { log.debug ("estimateRTT a="+nodeA+" b="+nodeB); comm.sendRequestMessage --- 226,230 ---- */ public void estimateRTT(final AddressIF nodeA, final AddressIF nodeB, ! final CB2<Double,String> cbDistance) { log.debug ("estimateRTT a="+nodeA+" b="+nodeB); comm.sendRequestMessage *************** *** 243,253 **** double distance = respA.coord.distanceTo(respB.coord); log.debug("distance= "+distance); ! cbDistance.call(CBResult.OK(), distance); break; } case TIMEOUT: case ERROR: { ! log.warn("Coord request to "+nodeB+" failed"); ! cbDistance.callCBResult(resultB); } } --- 248,259 ---- double distance = respA.coord.distanceTo(respB.coord); log.debug("distance= "+distance); ! cbDistance.call(CBResult.OK(), distance, "Success"); break; } case TIMEOUT: case ERROR: { ! String error = "Coord request to "+nodeB+" failed:"+ resultB.toString(); ! log.warn(error); ! cbDistance.call(resultB, new Double(0), error); } } *************** *** 259,264 **** case TIMEOUT: case ERROR: { ! log.warn("Coord request to "+nodeA+" failed"); ! cbDistance.callCBResult(resultA); break; } --- 265,270 ---- case TIMEOUT: case ERROR: { ! String error = "Coord request to "+nodeA+" failed:"+ resultA.toString(); ! cbDistance.call(resultA, new Double(0), error); break; } |
|
From: Jonathan L. <le...@us...> - 2006-12-06 22:04:13
|
Update of /cvsroot/pyxida/Pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23067 Modified Files: TODO Log Message: problem with return XML values Index: TODO =================================================================== RCS file: /cvsroot/pyxida/Pyxida/TODO,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** TODO 5 Dec 2006 19:23:39 -0000 1.11 --- TODO 6 Dec 2006 22:03:54 -0000 1.12 *************** *** 1,15 **** ###################################################################### ! V0.1 TODO - change return values for XML calls to strings so that errors can be diagnosed. - modify script so that it uses default ports - - add pl script to web page that does query - - add app-level coords for stability - - keep latest on PL in harvard_nc ###################################################################### ! V0.2 (Proxy coordinates) TODO: - maybe add Rohan's 3D visualisation applet to webpage (we already have the code) - add a web interface (ideally, it should work when a web browser is pointed --- 1,18 ---- ###################################################################### ! V0.1 OVERLAY NCs - change return values for XML calls to strings so that errors can be diagnosed. - modify script so that it uses default ports - keep latest on PL in harvard_nc ###################################################################### ! V0.2 Proxy coordinates ! ! - redesign pinger so that >1 pings work + ###################################################################### + V0.3 Web Interface + + - add pl script to web page that does query - maybe add Rohan's 3D visualisation applet to webpage (we already have the code) - add a web interface (ideally, it should work when a web browser is pointed *************** *** 17,20 **** --- 20,28 ---- ###################################################################### + V0.4 App-level Coordinates + + - add app-level coords for stability + + ###################################################################### FUTURE VERSIONS |
|
From: Jonathan L. <le...@us...> - 2006-12-06 22:04:07
|
Update of /cvsroot/pyxida/Pyxida/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23067/bin Modified Files: proxy.pl Log Message: problem with return XML values Index: proxy.pl =================================================================== RCS file: /cvsroot/pyxida/Pyxida/bin/proxy.pl,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** proxy.pl 5 Dec 2006 19:23:39 -0000 1.2 --- proxy.pl 6 Dec 2006 22:03:54 -0000 1.3 *************** *** 36,40 **** if (defined($para{'c'})) { my $res = $server->call("pyxida.createProxyCoord",$para{'c'},$lease); ! &outputBoolean($res); } elsif (defined($para{'d'})) { my $res = $server->call("pyxida.destroyProxyCoord",$para{'d'}); --- 36,41 ---- if (defined($para{'c'})) { my $res = $server->call("pyxida.createProxyCoord",$para{'c'},$lease); ! print Dumper($res); ! #&outputBoolean($res); } elsif (defined($para{'d'})) { my $res = $server->call("pyxida.destroyProxyCoord",$para{'d'}); |
|
From: Jonathan L. <le...@us...> - 2006-12-06 22:04:04
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23067/src/edu/harvard/syrah/pyxida/api Modified Files: ExternalAPI.java ExternalAPIIF.java Log Message: problem with return XML values Index: ExternalAPIIF.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/ExternalAPIIF.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ExternalAPIIF.java 5 Dec 2006 19:23:39 -0000 1.9 --- ExternalAPIIF.java 6 Dec 2006 22:03:54 -0000 1.10 *************** *** 5,8 **** --- 5,9 ---- import edu.harvard.syrah.sbon.async.CallbacksIF.CB1; + import edu.harvard.syrah.sbon.async.CallbacksIF.CB2; public interface ExternalAPIIF { *************** *** 14,23 **** public void getLocalCoord(CB1<Vector<Double>> cbLocalCoord); ! public void getRemoteCoord(String remoteNode, CB1<List<Double>> cbRemoteCoord); public void getLocalError(CB1<Double> cbLocalError); // Estimate the RTT ! public void estimateRTT(String nodeA, String nodeB, CB1<Double> cbLatency); // Create a new proxy coord with a lease --- 15,24 ---- public void getLocalCoord(CB1<Vector<Double>> cbLocalCoord); ! public void getRemoteCoord(String remoteNode, CB2<List<Double>,String> cbRemoteCoord); public void getLocalError(CB1<Double> cbLocalError); // Estimate the RTT ! public void estimateRTT(String nodeA, String nodeB, CB2<Double,String> cbLatency); // Create a new proxy coord with a lease *************** *** 25,37 **** // lease of 0 will expire in one hour // public void createProxyCoord(String remoteNode, long lease, CB1<Boolean> cbResult); ! public void createProxyCoord(String remoteNode, int lease, CB1<Boolean> cbResult); ! public void getProxyCoord(String remoteNode, CB1<Vector<Double>> cbProxyCoord); // Renew proxy coord lease ! public void renewProxyCoord(String remoteNode, int lease, CB1<Boolean> cbResult); ! public void destroyProxyCoord(String remoteNode, CB1<Boolean> cbResult); // TODO Add routing methods --- 26,38 ---- // lease of 0 will expire in one hour // public void createProxyCoord(String remoteNode, long lease, CB1<Boolean> cbResult); ! public void createProxyCoord(String remoteNode, int lease, CB1<String> cbResult); ! public void getProxyCoord(String remoteNode, CB2<Vector<Double>,String> cbProxyCoord); // Renew proxy coord lease ! public void renewProxyCoord(String remoteNode, int lease, CB1<String> cbResult); ! public void destroyProxyCoord(String remoteNode, CB1<String> cbResult); // TODO Add routing methods Index: ExternalAPI.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/ExternalAPI.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ExternalAPI.java 5 Dec 2006 19:23:39 -0000 1.10 --- ExternalAPI.java 6 Dec 2006 22:03:54 -0000 1.11 *************** *** 10,13 **** --- 10,14 ---- import edu.harvard.syrah.sbon.async.CBResult; import edu.harvard.syrah.sbon.async.CallbacksIF.CB1; + import edu.harvard.syrah.sbon.async.CallbacksIF.CB2; import edu.harvard.syrah.sbon.comm.AddressFactory; import edu.harvard.syrah.sbon.comm.AddressIF; *************** *** 23,27 **** public void createProxyCoord(String remoteNodeStr, final int lease, ! final CB1<Boolean> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { --- 24,28 ---- public void createProxyCoord(String remoteNodeStr, final int lease, ! final CB1<String> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { *************** *** 29,35 **** case OK: { log.debug("resolved node="+remoteNode); ! boolean res = ncManager.createProxyCoord(remoteNode, lease); ! if (!res) ! log.warn("createProxyCoord for "+remoteNode+" failed"); cbResult.call(CBResult.OK(),res); break; --- 30,35 ---- case OK: { log.debug("resolved node="+remoteNode); ! String res = ncManager.createProxyCoord(remoteNode, lease); ! log.debug(res); cbResult.call(CBResult.OK(),res); break; *************** *** 38,42 **** case ERROR: { log.warn(nsResult.toString()); ! cbResult.call(nsResult,false); break; } --- 38,42 ---- case ERROR: { log.warn(nsResult.toString()); ! cbResult.call(nsResult,nsResult.toString()); break; } *************** *** 47,51 **** public void getProxyCoord(String remoteNodeStr, ! final CB1<Vector<Double>> cbProxyCoord) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { --- 47,51 ---- public void getProxyCoord(String remoteNodeStr, ! final CB2<Vector<Double>,String> cbProxyCoord) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { *************** *** 55,59 **** Coordinate coord = ncManager.getProxyCoord(remoteNode); Vector<Double> listCoord = getVectorFromCoord(coord); ! cbProxyCoord.call(CBResult.OK(),listCoord); break; } --- 55,59 ---- Coordinate coord = ncManager.getProxyCoord(remoteNode); Vector<Double> listCoord = getVectorFromCoord(coord); ! cbProxyCoord.call(CBResult.OK(),listCoord,"Success"); break; } *************** *** 61,65 **** case ERROR: { log.warn(nsResult.toString()); ! cbProxyCoord.call(nsResult,null); break; } --- 61,65 ---- case ERROR: { log.warn(nsResult.toString()); ! cbProxyCoord.call(nsResult,null,nsResult.toString()); break; } *************** *** 70,74 **** public void destroyProxyCoord(String remoteNodeStr, ! final CB1<Boolean> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { --- 70,74 ---- public void destroyProxyCoord(String remoteNodeStr, ! final CB1<String> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { *************** *** 76,80 **** case OK: { log.debug("resolved node="+remoteNode); ! boolean res = ncManager.destroyProxyCoord(remoteNode); cbResult.call(CBResult.OK(),res); break; --- 76,80 ---- case OK: { log.debug("resolved node="+remoteNode); ! String res = ncManager.destroyProxyCoord(remoteNode); cbResult.call(CBResult.OK(),res); break; *************** *** 83,87 **** case ERROR: { log.warn(nsResult.toString()); ! cbResult.call(nsResult,false); break; } --- 83,87 ---- case ERROR: { log.warn(nsResult.toString()); ! cbResult.call(nsResult,nsResult.toString()); break; } *************** *** 91,95 **** } ! public void estimateRTT(final String nodeA, final String nodeB, final CB1<Double> cbDistance) { AddressFactory.createResolved(new String[] {nodeA, nodeB}, new CB1<Map<String, AddressIF>>() { protected void cb(CBResult result, Map<String, AddressIF> addrMap) { --- 91,95 ---- } ! public void estimateRTT(final String nodeA, final String nodeB, final CB2<Double,String> cbDistance) { AddressFactory.createResolved(new String[] {nodeA, nodeB}, new CB1<Map<String, AddressIF>>() { protected void cb(CBResult result, Map<String, AddressIF> addrMap) { *************** *** 102,107 **** case TIMEOUT: case ERROR: { ! log.warn("Address could not be resolved: " + result.toString()); ! cbDistance.callCBResult(result); } } --- 102,107 ---- case TIMEOUT: case ERROR: { ! log.warn(result.toString()); ! cbDistance.call(result,new Double(0),result.toString()); } } *************** *** 128,132 **** public void getRemoteCoord(final String remoteNodeStr, ! final CB1<List<Double>> cbRemoteCoord) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { --- 128,132 ---- public void getRemoteCoord(final String remoteNodeStr, ! final CB2<List<Double>,String> cbRemoteCoord) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { *************** *** 139,143 **** case OK: { Vector<Double> listCoord = getVectorFromCoord(remoteCoord); ! cbRemoteCoord.call(CBResult.OK(), listCoord); break; } --- 139,143 ---- case OK: { Vector<Double> listCoord = getVectorFromCoord(remoteCoord); ! cbRemoteCoord.call(CBResult.OK(), listCoord, "Success"); break; } *************** *** 145,149 **** case ERROR: { log.warn(ncResult.toString()); ! cbRemoteCoord.call(ncResult, null); break; } --- 145,149 ---- case ERROR: { log.warn(ncResult.toString()); ! cbRemoteCoord.call(ncResult, null,ncResult.toString()); break; } *************** *** 155,159 **** case ERROR: { log.warn(nsResult.toString()); ! cbRemoteCoord.call(nsResult, null); break; } --- 155,159 ---- case ERROR: { log.warn(nsResult.toString()); ! cbRemoteCoord.call(nsResult, null,nsResult.toString()); break; } *************** *** 168,172 **** public void renewProxyCoord(String remoteNodeStr, final int lease, ! final CB1<Boolean> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { --- 168,172 ---- public void renewProxyCoord(String remoteNodeStr, final int lease, ! final CB1<String> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { protected void cb(CBResult nsResult, AddressIF remoteNode) { *************** *** 174,178 **** case OK: { log.debug("resolved node="+remoteNode); ! boolean res = ncManager.renewLeaseOnProxyCoord(remoteNode, lease); cbResult.call(CBResult.OK(),res); break; --- 174,178 ---- case OK: { log.debug("resolved node="+remoteNode); ! String res = ncManager.renewLeaseOnProxyCoord(remoteNode, lease); cbResult.call(CBResult.OK(),res); break; *************** *** 181,185 **** case ERROR: { log.warn(nsResult.toString()); ! cbResult.call(nsResult,false); break; } --- 181,185 ---- case ERROR: { log.warn(nsResult.toString()); ! cbResult.call(nsResult,nsResult.toString()); break; } |
|
From: Jonathan L. <le...@us...> - 2006-12-05 19:23:41
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19708/src/edu/harvard/syrah/pyxida/api Modified Files: ExternalAPI.java ExternalAPIIF.java Log Message: more headway with proxy coords Index: ExternalAPIIF.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/ExternalAPIIF.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ExternalAPIIF.java 5 Dec 2006 15:47:56 -0000 1.8 --- ExternalAPIIF.java 5 Dec 2006 19:23:39 -0000 1.9 *************** *** 31,35 **** // Renew proxy coord lease ! public void renewProxyCoord(String remoteNode, long lease, CB1<Boolean> cbResult); public void destroyProxyCoord(String remoteNode, CB1<Boolean> cbResult); --- 31,35 ---- // Renew proxy coord lease ! public void renewProxyCoord(String remoteNode, int lease, CB1<Boolean> cbResult); public void destroyProxyCoord(String remoteNode, CB1<Boolean> cbResult); Index: ExternalAPI.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/ExternalAPI.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ExternalAPI.java 5 Dec 2006 15:47:56 -0000 1.9 --- ExternalAPI.java 5 Dec 2006 19:23:39 -0000 1.10 *************** *** 167,171 **** } ! public void renewProxyCoord(String remoteNodeStr, final long lease, final CB1<Boolean> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { --- 167,171 ---- } ! public void renewProxyCoord(String remoteNodeStr, final int lease, final CB1<Boolean> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { |
|
From: Jonathan L. <le...@us...> - 2006-12-05 19:23:41
|
Update of /cvsroot/pyxida/Pyxida/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19708/bin Modified Files: proxy.pl Log Message: more headway with proxy coords Index: proxy.pl =================================================================== RCS file: /cvsroot/pyxida/Pyxida/bin/proxy.pl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** proxy.pl 5 Dec 2006 03:59:26 -0000 1.1 --- proxy.pl 5 Dec 2006 19:23:39 -0000 1.2 *************** *** 36,61 **** if (defined($para{'c'})) { my $res = $server->call("pyxida.createProxyCoord",$para{'c'},$lease); ! #print Dumper($hash); ! #&Aux::printHash($hash); ! print "$res\n"; } else { die ("Missing arguments\n$usage"); } ! # TODO put in shared file ! sub parse_coord { ! my ($coord) = @_; ! my $out = '['; ! for (my $i = 0; $i <= $#$coord; $i++) { ! my $element = sprintf ("%.3f", $coord->[$i]); ! # if ($i == $#$coord && $USE_HEIGHT) { ! # $out .= 'h'; ! # } ! $out .= $element; ! if ($i != $#$coord) { ! $out .= ' '; ! } } - $out .= ']'; - return $out; } --- 36,61 ---- if (defined($para{'c'})) { my $res = $server->call("pyxida.createProxyCoord",$para{'c'},$lease); ! &outputBoolean($res); ! } elsif (defined($para{'d'})) { ! my $res = $server->call("pyxida.destroyProxyCoord",$para{'d'}); ! &outputBoolean($res); ! } elsif (defined($para{'r'})) { ! my $res = $server->call("pyxida.renewProxyCoord",$para{'r'},$lease); ! &outputBoolean($res); } else { die ("Missing arguments\n$usage"); } ! ############################################################ ! ! sub outputBoolean { ! my ($res) = @_; ! #print Dumper($res); ! #&Aux::printHash($hash); ! my $success = $res->value; ! if ($success == 1) { ! print "Success\n"; ! } else { ! print "Failure\n"; } } |
|
From: Jonathan L. <le...@us...> - 2006-12-05 19:23:41
|
Update of /cvsroot/pyxida/Pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19708 Modified Files: TODO Log Message: more headway with proxy coords Index: TODO =================================================================== RCS file: /cvsroot/pyxida/Pyxida/TODO,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** TODO 5 Dec 2006 15:47:56 -0000 1.10 --- TODO 5 Dec 2006 19:23:39 -0000 1.11 *************** *** 2,10 **** V0.1 TODO - modify script so that it uses default ports - - roll out on PL into harvard_nc - add pl script to web page that does query - add app-level coords for stability ###################################################################### V0.2 (Proxy coordinates) TODO: --- 2,12 ---- V0.1 TODO + - change return values for XML calls to strings so that errors can be diagnosed. - modify script so that it uses default ports - add pl script to web page that does query - add app-level coords for stability + - keep latest on PL in harvard_nc + ###################################################################### V0.2 (Proxy coordinates) TODO: |
|
From: Jonathan L. <le...@us...> - 2006-12-05 19:01:35
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11686/src/edu/harvard/syrah/pyxida/nc Modified Files: NCManager.java Log Message: fixed proxyping Index: NCManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc/NCManager.java,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** NCManager.java 5 Dec 2006 15:47:56 -0000 1.22 --- NCManager.java 5 Dec 2006 19:01:29 -0000 1.23 *************** *** 282,291 **** final CB1<Boolean> cbHandled) { - CBResult result = null; if (errorMessage != null) { ! log.debug(handler + " :" + errorMessage); ! result = CBResult.ERROR(errorMessage); ! } else { ! result = CBResult.OK(); } --- 282,287 ---- final CB1<Boolean> cbHandled) { if (errorMessage != null) { ! log.warn(handler + " :" + errorMessage); } *************** *** 301,305 **** } }); ! cbHandled.call(result, true); } } --- 297,301 ---- } }); ! cbHandled.call(CBResult.OK(), true); } } *************** *** 360,364 **** sendResponseMessage ("Ping", remoteAddr, ! new PingResponseMsg(0), msg.getMsgId(), "Ping to "+msg.target+" failed", cbHandled); break; --- 356,360 ---- sendResponseMessage ("Ping", remoteAddr, ! new ProxyPingResponseMsg(null, 0, 0, 0), msg.getMsgId(), "Ping to "+msg.target+" failed", cbHandled); break; *************** *** 627,638 **** switch (result.state) { case OK: { ! log.debug("proxyping response from "+neighbor+ ! " lat to "+addr+" "+responseMsg.latency); ! long curr_time = System.currentTimeMillis(); ! nc.processSample(neighbor, responseMsg.remoteCoordinate, ! responseMsg.remoteError, responseMsg.latency, ! responseMsg.remoteAge, ! curr_time, true); ! log.debug("update: "+nc); addUpNeighbor(neighbor); break; --- 623,638 ---- switch (result.state) { case OK: { ! if (responseMsg.remoteCoordinate != null) { ! log.debug("proxyping response from "+neighbor+ ! " lat to "+addr+" "+responseMsg.latency); ! long curr_time = System.currentTimeMillis(); ! nc.processSample(neighbor, responseMsg.remoteCoordinate, ! responseMsg.remoteError, responseMsg.latency, ! responseMsg.remoteAge, ! curr_time, true); ! log.debug("update: "+nc); ! } else { ! log.debug("proxyping from "+neighbor+" to "+addr+" failed"); ! } addUpNeighbor(neighbor); break; |
|
From: Jonathan L. <le...@us...> - 2006-12-05 15:48:06
|
Update of /cvsroot/pyxida/Pyxida/config In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32507/config Modified Files: pyxida.cfg Log Message: ping failure causes crash Index: pyxida.cfg =================================================================== RCS file: /cvsroot/pyxida/Pyxida/config/pyxida.cfg,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** pyxida.cfg 1 Dec 2006 18:30:23 -0000 1.7 --- pyxida.cfg 5 Dec 2006 15:47:56 -0000 1.8 *************** *** 12,19 **** --- 12,21 ---- # Port = integer in port range # Port number over which overlay communication will take place. + # default=55504 pyxida.port=55500 # Api.Port = integer in port range # Port number that XML/RPC server listens on. + # default=55501 # pyxida.api.port=55501 *************** *** 31,33 **** # accurate and consistent results but requires # that you run the code as root. ! pyxida.use_icmp=false --- 33,35 ---- # accurate and consistent results but requires # that you run the code as root. ! pyxida.use_icmp=true |
|
From: Jonathan L. <le...@us...> - 2006-12-05 15:48:05
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32507/src/edu/harvard/syrah/pyxida/nc Modified Files: NCManager.java Log Message: ping failure causes crash Index: NCManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/nc/NCManager.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** NCManager.java 5 Dec 2006 03:59:26 -0000 1.21 --- NCManager.java 5 Dec 2006 15:47:56 -0000 1.22 *************** *** 136,141 **** --- 136,143 ---- return false; } + log.warn("createProxyCoord for "+remoteNode); ProxyClient client = new ProxyClient(remoteNode,lease); addr2proxyClient.put(remoteNode,client); + client.init(); return true; } *************** *** 465,468 **** --- 467,471 ---- public CoordClient() { + log.warn("coordclient ctor"); nc = new NCClient<AddressIF>(NCManager.NC_NUM_DIMS); *************** *** 611,614 **** --- 614,618 ---- registerTimer(); final AddressIF neighbor = pickGossipNode(); + log.warn("proxyClient update addr="+addr); // ask him to ping our address *************** *** 650,653 **** --- 654,658 ---- // prp: Don't know but if you want to clone it, use the copy constructor addr = AddressFactory.create(_addr); + log.warn("proxyclient ctor "+addr); } |
|
From: Jonathan L. <le...@us...> - 2006-12-05 15:48:01
|
Update of /cvsroot/pyxida/Pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32507 Modified Files: TODO Log Message: ping failure causes crash Index: TODO =================================================================== RCS file: /cvsroot/pyxida/Pyxida/TODO,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** TODO 5 Dec 2006 10:35:47 -0000 1.9 --- TODO 5 Dec 2006 15:47:56 -0000 1.10 *************** *** 2,12 **** V0.1 TODO - roll out on PL into harvard_nc - add pl script to web page that does query ###################################################################### V0.2 (Proxy coordinates) TODO: ! - add Rohan's 3D visualisation applet to webpage (we already have the code) - add a web interface (ideally, it should work when a web browser is pointed to the xmlrpc port) --- 2,14 ---- V0.1 TODO + - modify script so that it uses default ports - roll out on PL into harvard_nc - add pl script to web page that does query + - add app-level coords for stability ###################################################################### V0.2 (Proxy coordinates) TODO: ! - maybe add Rohan's 3D visualisation applet to webpage (we already have the code) - add a web interface (ideally, it should work when a web browser is pointed to the xmlrpc port) |
|
From: Jonathan L. <le...@us...> - 2006-12-05 15:48:01
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32507/src/edu/harvard/syrah/pyxida/api Modified Files: ExternalAPI.java ExternalAPIIF.java Log Message: ping failure causes crash Index: ExternalAPIIF.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/ExternalAPIIF.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ExternalAPIIF.java 5 Dec 2006 03:59:26 -0000 1.7 --- ExternalAPIIF.java 5 Dec 2006 15:47:56 -0000 1.8 *************** *** 24,28 **** // lease is given in ms // lease of 0 will expire in one hour ! public void createProxyCoord(String remoteNode, long lease, CB1<Boolean> cbResult); public void getProxyCoord(String remoteNode, CB1<Vector<Double>> cbProxyCoord); --- 24,30 ---- // lease is given in ms // lease of 0 will expire in one hour ! // public void createProxyCoord(String remoteNode, long lease, CB1<Boolean> cbResult); ! public void createProxyCoord(String remoteNode, int lease, CB1<Boolean> cbResult); ! public void getProxyCoord(String remoteNode, CB1<Vector<Double>> cbProxyCoord); Index: ExternalAPI.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/ExternalAPI.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ExternalAPI.java 5 Dec 2006 03:59:26 -0000 1.8 --- ExternalAPI.java 5 Dec 2006 15:47:56 -0000 1.9 *************** *** 22,26 **** } ! public void createProxyCoord(String remoteNodeStr, final long lease, final CB1<Boolean> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { --- 22,26 ---- } ! public void createProxyCoord(String remoteNodeStr, final int lease, final CB1<Boolean> cbResult) { AddressFactory.createResolved(remoteNodeStr, new CB1<AddressIF>() { *************** *** 30,33 **** --- 30,35 ---- log.debug("resolved node="+remoteNode); boolean res = ncManager.createProxyCoord(remoteNode, lease); + if (!res) + log.warn("createProxyCoord for "+remoteNode+" failed"); cbResult.call(CBResult.OK(),res); break; |