Author: zothar
Date: 2006-06-30 00:58:15 +0000 (Fri, 30 Jun 2006)
New Revision: 9408

Modified:
   trunk/freenet/src/freenet/node/PeerNode.java
   trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java
   trunk/freenet/src/freenet/node/fcp/Peer.java
Log:
Added volatile data capability to ListPeers client-to-node FCP reqest.

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2006-06-29 23:01:29 UTC 
(rev 9407)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2006-06-30 00:58:15 UTC 
(rev 9408)
@@ -1495,6 +1495,29 @@
        return fs;
        }

+    /**
+     * Export volatile data about the node as a SimpleFieldSet
+     */
+    public SimpleFieldSet exportVolatileFieldSet() {
+       SimpleFieldSet fs = new SimpleFieldSet(true);
+               fs.put("averagePingTime", Double.toString(averagePingTime()));
+               long now = System.currentTimeMillis();
+               long idle = now - lastReceivedPacketTime();
+               if(idle > (60 * 1000)) {  // 1 minute
+                       fs.put("idle", Long.toString(idle));
+               }
+               fs.put("lastRoutingBackoffReason", getLastBackoffReason());
+               long peerAddedTime = getPeerAddedTime();
+               if(peerAddedTime > 1) {
+                       fs.put("peerAddedTime", Long.toString(peerAddedTime));
+               }
+               fs.put("routingBackoffPercent", 
Double.toString(backedOffPercent.currentValue() * 100));
+               fs.put("routingBackoff", 
Long.toString((Math.max(routingBackedOffUntil - now, 0))));
+               fs.put("routingBackoffLength", 
Integer.toString(getRoutingBackoffLength()));
+               fs.put("status", getPeerNodeStatusString());
+       return fs;
+       }
+
        /**
      * Export the peer's noderef as a SimpleFieldSet
      */
@@ -1603,7 +1626,7 @@
        /** Previous backoff reason (used by setPeerNodeStatus)*/
        String previousRoutingBackoffReason = null;
        /* percent of time this peer is backedoff */
-       public RunningAverage backedOffPercent = new 
TimeDecayingRunningAverage(0.0, 180000, 0.0, 1.0);
+       public RunningAverage backedOffPercent = new 
TimeDecayingRunningAverage(0.0, 180000, 0.0, 1.0);
        /* time of last sample */
        private long lastSampleTime = Long.MAX_VALUE;


Modified: trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java    2006-06-29 
23:01:29 UTC (rev 9407)
+++ trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java    2006-06-30 
00:58:15 UTC (rev 9408)
@@ -8,10 +8,12 @@
 public class ListPeersMessage extends FCPMessage {

        final boolean withMetadata;
+       final boolean withVolatile;
        static final String name = "ListPeers";

        public ListPeersMessage(SimpleFieldSet fs) {
                withMetadata = Fields.stringToBool(fs.get("WithMetadata"), 
false);
+               withVolatile = Fields.stringToBool(fs.get("WithVolatile"), 
false);
        }

        public SimpleFieldSet getFieldSet() {
@@ -27,7 +29,7 @@
                PeerNode[] nodes = node.getPeerNodes();
                for(int i = 0; i < nodes.length; i++) {
                        PeerNode pn = nodes[i];
-                       handler.outputHandler.queue(new Peer(pn, withMetadata));
+                       handler.outputHandler.queue(new Peer(pn, withMetadata, 
withVolatile));
                }
                handler.outputHandler.queue(new EndListPeersMessage());
        }

Modified: trunk/freenet/src/freenet/node/fcp/Peer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/Peer.java        2006-06-29 23:01:29 UTC 
(rev 9407)
+++ trunk/freenet/src/freenet/node/fcp/Peer.java        2006-06-30 00:58:15 UTC 
(rev 9408)
@@ -13,10 +13,12 @@

        final PeerNode pn;
        final boolean withMetadata;
+       final boolean withVolatile;

-       public Peer(PeerNode pn, boolean withMetadata) {
+       public Peer(PeerNode pn, boolean withMetadata, boolean withVolatile) {
                this.pn = pn;
                this.withMetadata = withMetadata;
+               this.withVolatile = withVolatile;
        }

        public SimpleFieldSet getFieldSet() {
@@ -27,6 +29,12 @@
                                fs.put("metadata", meta);
                        }
                }
+               if(withVolatile) {
+                       SimpleFieldSet vol = pn.exportVolatileFieldSet();
+                       if(!vol.isEmpty()) {
+                               fs.put("volatile", vol);
+                       }
+               }
                return fs;
        }



Reply via email to