Author: toad
Date: 2007-11-27 01:05:11 +0000 (Tue, 27 Nov 2007)
New Revision: 15951

Modified:
   trunk/freenet/src/freenet/clients/http/ConnectivityToadlet.java
   trunk/freenet/src/freenet/io/AddressTrackerItem.java
Log:
Show the last 5 long send/recv gaps in the connectivity toadlet.

Modified: trunk/freenet/src/freenet/clients/http/ConnectivityToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ConnectivityToadlet.java     
2007-11-27 00:55:44 UTC (rev 15950)
+++ trunk/freenet/src/freenet/clients/http/ConnectivityToadlet.java     
2007-11-27 01:05:11 UTC (rev 15951)
@@ -20,8 +20,10 @@

 import freenet.client.HighLevelSimpleClient;
 import freenet.io.AddressTracker;
+import freenet.io.AddressTrackerItem;
 import freenet.io.InetAddressAddressTrackerItem;
 import freenet.io.PeerAddressTrackerItem;
+import freenet.io.AddressTrackerItem.Gap;
 import freenet.io.comm.UdpSocketHandler;
 import freenet.l10n.L10n;
 import freenet.node.Node;
@@ -69,6 +71,7 @@
                String noreply = l10n("noreply");
                String local = l10n("local");
                String remote = l10n("remote");
+               long now = System.currentTimeMillis();

                for(int i=0;i<handlers.length;i++) {
                        // Peers
@@ -84,6 +87,9 @@
                        row.addChild("th", l10n("localRemoteTitle"));
                        row.addChild("th", l10n("firstSendLeadTime"));
                        row.addChild("th", l10n("firstReceiveLeadTime"));
+                       for(int j=0;j<AddressTrackerItem.TRACK_GAPS;j++) {
+                               row.addChild("th", " "); // FIXME is <th/> 
valid??
+                       }
                        for(int j=0;j<items.length;j++) {
                                row = table.addChild("tr");
                                PeerAddressTrackerItem item = items[j];
@@ -98,6 +104,11 @@
                                row.addChild("td", 
TimeUtil.formatTime(item.timeFromStartupToFirstSentPacket()));
                                // Lead in time to first packet received
                                row.addChild("td", 
TimeUtil.formatTime(item.timeFromStartupToFirstReceivedPacket()));
+                               Gap[] gaps = item.getGaps();
+                               for(int 
k=0;k<AddressTrackerItem.TRACK_GAPS;k++) {
+                                       row.addChild("td", 
gaps[k].receivedPacketAt == 0 ? "" : 
+                                               
(TimeUtil.formatTime(gaps[k].gapLength)+" @ "+TimeUtil.formatTime(now - 
gaps[k].receivedPacketAt)+" ago" /* fixme l10n */));
+                               }
                        }

                        // IPs
@@ -112,6 +123,9 @@
                        row.addChild("th", l10n("localRemoteTitle"));
                        row.addChild("th", l10n("firstSendLeadTime"));
                        row.addChild("th", l10n("firstReceiveLeadTime"));
+                       for(int j=0;j<AddressTrackerItem.TRACK_GAPS;j++) {
+                               row.addChild("th", " "); // FIXME is <th/> 
valid??
+                       }
                        for(int j=0;j<ipItems.length;j++) {
                                row = table.addChild("tr");
                                InetAddressAddressTrackerItem item = ipItems[j];
@@ -126,6 +140,11 @@
                                row.addChild("td", 
TimeUtil.formatTime(item.timeFromStartupToFirstSentPacket()));
                                // Lead in time to first packet received
                                row.addChild("td", 
TimeUtil.formatTime(item.timeFromStartupToFirstReceivedPacket()));
+                               Gap[] gaps = item.getGaps();
+                               for(int 
k=0;k<AddressTrackerItem.TRACK_GAPS;k++) {
+                                       row.addChild("td", 
gaps[k].receivedPacketAt == 0 ? "" : 
+                                               
(TimeUtil.formatTime(gaps[k].gapLength)+" @ "+TimeUtil.formatTime(now - 
gaps[k].receivedPacketAt)+" ago" /* fixme l10n */));
+                               }
                        }

                }

Modified: trunk/freenet/src/freenet/io/AddressTrackerItem.java
===================================================================
--- trunk/freenet/src/freenet/io/AddressTrackerItem.java        2007-11-27 
00:55:44 UTC (rev 15950)
+++ trunk/freenet/src/freenet/io/AddressTrackerItem.java        2007-11-27 
01:05:11 UTC (rev 15951)
@@ -43,7 +43,7 @@
        private long packetsSent;
        /** The total number of packets received from this address */
        private long packetsReceived;
-       static final int TRACK_GAPS = 5;
+       public static final int TRACK_GAPS = 5;
        private long[] topGapLengths;
        private long[] topGapLengthRecvTimes;
        static final int GAP_THRESHOLD = AddressTracker.MAX_TUNNEL_LENGTH;
@@ -88,6 +88,23 @@
                }
        }

+       public class Gap {
+               public final long gapLength;
+               public final long receivedPacketAt;
+               Gap(long gapLength, long receivedPacketAt) {
+                       this.gapLength = gapLength;
+                       this.receivedPacketAt = receivedPacketAt;
+               }
+       }
+       
+       public synchronized Gap[] getGaps() {
+               Gap[] gaps = new Gap[GAP_THRESHOLD];
+               for(int i=0;i<GAP_THRESHOLD;i++) {
+                       gaps[i] = new Gap(topGapLengths[i], 
topGapLengthRecvTimes[i]);
+               }
+               return gaps;
+       }
+       
        public synchronized long firstReceivedPacket() {
                return timeFirstReceivedPacket;
        }


Reply via email to