Author: zothar
Date: 2006-07-21 21:20:36 +0000 (Fri, 21 Jul 2006)
New Revision: 9704

Modified:
   trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
   trunk/freenet/src/freenet/node/InsertHandler.java
   trunk/freenet/src/freenet/node/LocationManager.java
   trunk/freenet/src/freenet/node/PeerNode.java
   trunk/freenet/src/freenet/node/Version.java
Log:
891: Idle time is now time since connected and routing was compatible.  
Connected/Backed off peers now report how long they've been connected in the 
idle column.

Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-07-21 20:40:08 UTC (rev 9703)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-07-21 21:20:36 UTC (rev 9704)
@@ -258,7 +258,7 @@
                        buf2.append("  <th>Location</th>\n");
                        buf2.append("  <th><span title=\"Temporarily 
disconnected. Other node busy? Wait time(s) remaining/total\" 
style=\"border-bottom:1px dotted;cursor:help;\">Backoff</span></th>\n");
                }
-               buf2.append("  <th><span title=\"How long since the node was 
last seen\" style=\"border-bottom:1px 
dotted;cursor:help;\">Idle</span></th>\n");
+               buf2.append("  <th><span title=\"How long since the node 
connected or was last seen\" style=\"border-bottom:1px 
dotted;cursor:help;\">Connected&nbsp;/ Idle</span></th>\n");
                buf2.append(" </tr>\n");

                if (peerNodes.length == 0) {
@@ -284,9 +284,12 @@
                                rows[i] = row;

                                Object status = new 
Integer(pn.getPeerNodeStatus());
-                               long idle = pn.lastReceivedPacketTime();
-                               if(((Integer) status).intValue() == 
Node.PEER_NODE_STATUS_NEVER_CONNECTED)
+                               long idle = pn.timeLastRoutable();
+                               if(pn.isRoutable()) {
+                                       idle = pn.timeLastConnectionCompleted();
+                               } else if(((Integer) status).intValue() == 
Node.PEER_NODE_STATUS_NEVER_CONNECTED) {
                                        idle = pn.getPeerAddedTime();
+                               }
                                String lastBackoffReasonOutputString = "";
                                if(advancedEnabled) {
                                        String backoffReason = 
pn.getLastBackoffReason();
@@ -659,9 +662,6 @@
                        return " ";
                }
                long idleSeconds = (now - idle) / 1000;
-               if((idleSeconds < 60) && ((peerNodeStatus == 
Node.PEER_NODE_STATUS_CONNECTED) || (peerNodeStatus == 
Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF))) {
-                 return "0m";
-               }
                return timeIntervalToString( idleSeconds );
        }


Modified: trunk/freenet/src/freenet/node/InsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertHandler.java   2006-07-21 20:40:08 UTC 
(rev 9703)
+++ trunk/freenet/src/freenet/node/InsertHandler.java   2006-07-21 21:20:36 UTC 
(rev 9704)
@@ -101,7 +101,7 @@

         if(msg == null) {
                try {
-                       if(source.isConnected() && (startTime > 
(source.timeLastConnected()+Node.HANDSHAKE_TIMEOUT*4)))
+                       if(source.isConnected() && (startTime > 
(source.timeLastConnectionCompleted()+Node.HANDSHAKE_TIMEOUT*4)))
                                Logger.error(this, "Did not receive DataInsert 
on "+uid+" from "+source+" !");
                        Message tooSlow = DMT.createFNPRejectedTimeout(uid);
                        source.sendAsync(tooSlow, null, 0, this);

Modified: trunk/freenet/src/freenet/node/LocationManager.java
===================================================================
--- trunk/freenet/src/freenet/node/LocationManager.java 2006-07-21 20:40:08 UTC 
(rev 9703)
+++ trunk/freenet/src/freenet/node/LocationManager.java 2006-07-21 21:20:36 UTC 
(rev 9704)
@@ -386,7 +386,7 @@
                 }

                 if(reply == null) {
-                    if(pn.isRoutable() && (System.currentTimeMillis() - 
pn.timeLastConnected() > TIMEOUT*2)) {
+                    if(pn.isRoutable() && (System.currentTimeMillis() - 
pn.timeLastConnectionCompleted() > TIMEOUT*2)) {
                         // Timed out! Abort...
                         Logger.error(this, "Timed out waiting for 
SwapRejected/SwapReply on "+uid);
                     }
@@ -421,7 +421,7 @@
                 }

                 if(reply == null) {
-                    if(pn.isRoutable() && (System.currentTimeMillis() - 
pn.timeLastConnected() > TIMEOUT*2)) {
+                    if(pn.isRoutable() && (System.currentTimeMillis() - 
pn.timeLastConnectionCompleted() > TIMEOUT*2)) {
                         // Hrrrm!
                         Logger.error(this, "Timed out waiting for SwapComplete 
- malicious node?? on "+uid);
                     }

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2006-07-21 20:40:08 UTC 
(rev 9703)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2006-07-21 21:20:36 UTC 
(rev 9704)
@@ -108,6 +108,12 @@

     /** When did we last receive a packet? */
     private long timeLastReceivedPacket;
+       
+    /** When was isConnected() last true? */
+    private long timeLastConnected;
+       
+    /** When was isRoutingCompatible() last true? */
+    private long timeLastRoutable;

     /** Are we connected? If not, we need to start trying to
      * handshake.
@@ -375,6 +381,8 @@
         timeLastSentPacket = -1;
         timeLastReceivedPacket = -1;
         timeLastReceivedSwapRequest = -1;
+        timeLastConnected = -1;
+        timeLastRoutable = -1;

         randomizeMaxTimeBetweenPacketSends();
         swapRequestsInterval = new SimpleRunningAverage(50, 
Node.MIN_INTERVAL_BETWEEN_INCOMING_SWAP_REQUESTS);
@@ -436,6 +444,22 @@
                        long tempTimeLastReceivedPacket = 
Long.parseLong(tempTimeLastReceivedPacketString);
                        timeLastReceivedPacket = tempTimeLastReceivedPacket;
                }
+               String tempTimeLastConnectedString = 
metadata.get("timeLastConnected");
+               if(tempTimeLastConnectedString != null) {
+                       long tempTimeLastConnected = 
Long.parseLong(tempTimeLastConnectedString);
+                       timeLastConnected = tempTimeLastConnected;
+               }
+               String tempTimeLastRoutableString = 
metadata.get("timeLastRoutable");
+               if(tempTimeLastRoutableString != null) {
+                       long tempTimeLastRoutable = 
Long.parseLong(tempTimeLastRoutableString);
+                       timeLastRoutable = tempTimeLastRoutable;
+               }
+               if(timeLastConnected < 1 && timeLastReceivedPacket > 1) {
+                       timeLastConnected = timeLastReceivedPacket;
+               }
+               if(timeLastRoutable < 1 && timeLastReceivedPacket > 1) {
+                       timeLastRoutable = timeLastReceivedPacket;
+               }
                String tempPeerAddedTimeString = metadata.get("peerAddedTime");
                if(tempPeerAddedTimeString != null) {
                        long tempPeerAddedTime = 
Long.parseLong(tempPeerAddedTimeString);
@@ -715,11 +739,25 @@
         return isConnected() && isRoutingCompatible();
     }

-    public synchronized boolean isRoutingCompatible(){
-       return isRoutable;
+    public boolean isRoutingCompatible(){
+       long now = System.currentTimeMillis();
+       synchronized(this) {
+               if( isRoutable ) {
+                       timeLastRoutable = now;
+                       return true;
+               }
+                       return false;
+       }
     }
-    public synchronized boolean isConnected(){
-       return isConnected;
+    public boolean isConnected(){
+       long now = System.currentTimeMillis();
+       synchronized(this) {
+               if( isConnected ) {
+                       timeLastConnected = now;
+                       return true;
+               }
+                       return false;
+       }
     }

     /**
@@ -751,6 +789,14 @@
         return timeLastReceivedPacket;
     }

+    public synchronized long timeLastConnected() {
+        return timeLastConnected;
+    }
+
+    public synchronized long timeLastRoutable() {
+        return timeLastRoutable;
+    }
+
     /**
      * @return The time this PeerNode was added to the node
      */
@@ -1659,6 +1705,10 @@
                fs.put("detected.udp", getDetectedPeer().toString());
        if(lastReceivedPacketTime() > 0)
                fs.put("timeLastReceivedPacket", 
Long.toString(lastReceivedPacketTime()));
+       if(timeLastConnected() > 0)
+               fs.put("timeLastConnected", Long.toString(timeLastConnected()));
+       if(timeLastRoutable() > 0)
+               fs.put("timeLastRoutable", Long.toString(timeLastRoutable()));
        if(getPeerAddedTime() > 0)
                fs.put("peerAddedTime", Long.toString(getPeerAddedTime()));
        if(neverConnected())
@@ -1732,7 +1782,7 @@
     /**
      * @return The time at which we last connected (or reconnected).
      */
-    public synchronized long timeLastConnected() {
+    public synchronized long timeLastConnectionCompleted() {
         return connectedTime;
     }

@@ -2162,7 +2212,7 @@
                long localRoutingBackedOffUntil = getRoutingBackedOffUntil();
                synchronized(this) {
                        int oldPeerNodeStatus = peerNodeStatus;
-                       if(isRoutable()) {
+                       if(isRoutable()) {  // Function use also updates 
timeLastConnected and timeLastRoutable
                                peerNodeStatus = 
Node.PEER_NODE_STATUS_CONNECTED;
                                if(now < localRoutingBackedOffUntil ) {
                                        peerNodeStatus = 
Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF;
@@ -2181,7 +2231,7 @@
                                }
                        } else if(isDisabled) {
                                peerNodeStatus = Node.PEER_NODE_STATUS_DISABLED;
-                       } else if(isConnected && 
verifiedIncompatibleNewerVersion) {
+                       } else if(isConnected() && 
verifiedIncompatibleNewerVersion) {
                                peerNodeStatus = Node.PEER_NODE_STATUS_TOO_NEW;
                        } else if(isConnected && 
verifiedIncompatibleOlderVersion) {
                                peerNodeStatus = Node.PEER_NODE_STATUS_TOO_OLD;

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-07-21 20:40:08 UTC (rev 
9703)
+++ trunk/freenet/src/freenet/node/Version.java 2006-07-21 21:20:36 UTC (rev 
9704)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 890;
+       private static final int buildNumber = 891;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 870;


Reply via email to