NumberFormatException's must be caught in PeerNode's constructor.

On Sun, Oct 22, 2006 at 06:27:20PM +0000, zothar at freenetproject.org wrote:
> Author: zothar
> Date: 2006-10-22 18:27:14 +0000 (Sun, 22 Oct 2006)
> New Revision: 10686
> 
> Modified:
>    trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
>    trunk/freenet/src/freenet/node/Node.java
>    trunk/freenet/src/freenet/node/PacketSender.java
>    trunk/freenet/src/freenet/node/PeerNode.java
>    trunk/freenet/src/freenet/node/PeerNodeStatus.java
> Log:
> Add percent Time Routable and export it and a few other things via FCP.
> 
> Modified: 
> trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
> ===================================================================
> --- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java     
> 2006-10-22 01:52:16 UTC (rev 10685)
> +++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java     
> 2006-10-22 18:27:14 UTC (rev 10686)
> @@ -339,6 +339,7 @@
>                               
> peerTableHeaderRow.addChild("th").addChild("span", new String[] { "title", 
> "style" }, new String[] { "A private note concerning this peer", 
> "border-bottom: 1px dotted; cursor: help;" }, "Private Note");
>  
>                               if(advancedEnabled) {
> +                                     peerTableHeaderRow.addChild("th", 
> "%\u00a0Time Routable");
>                                       peerTableHeaderRow.addChild("th", 
> "Total\u00a0Traffic\u00a0(in/out)");
>                               }
>                               
> @@ -413,8 +414,12 @@
>                                       // private darknet node comment note 
> column
>                                       peerRow.addChild("td", "class", 
> "peer-private-darknet-comment-note").addChild("input", new String[] { "type", 
> "name", "size", "maxlength", "value" }, new String[] { "text", 
> "peerPrivateNote_" + peerNodeStatus.hashCode(), "16", "250", 
> peerNodeStatus.getPrivateDarknetCommentNote() });
>  
> -                                     if(advancedEnabled)
> +                                     if(advancedEnabled) {
> +                                             // percent of time connected 
> column
> +                                             peerRow.addChild("td", "class", 
> "peer-idle" /* FIXME */).addChild("#", 
> fix1.format(peerNodeStatus.getPercentTimeRoutableConnection()));
> +                                             // total traffic column
>                                               peerRow.addChild("td", "class", 
> "peer-idle" /* FIXME */).addChild("#", 
> SizeUtil.formatSize(peerNodeStatus.getTotalInputBytes())+" / 
> "+SizeUtil.formatSize(peerNodeStatus.getTotalOutputBytes()));
> +                                     }
>                                       
>                                       if 
> (path.endsWith("displaymessagetypes.html")) {
>                                               HTMLNode messageCountRow = 
> peerTable.addChild("tr", "class", "message-status");
> 
> Modified: trunk/freenet/src/freenet/node/Node.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/Node.java  2006-10-22 01:52:16 UTC (rev 
> 10685)
> +++ trunk/freenet/src/freenet/node/Node.java  2006-10-22 18:27:14 UTC (rev 
> 10686)
> @@ -448,6 +448,10 @@
>       private long nextNodeIOStatsUpdateTime = -1;
>       /** Node I/O stats update interval (milliseconds) */
>       private static final long nodeIOStatsUpdateInterval = 2000;
> +     /** Next time to update routableConnectionStats */
> +     private long nextRoutableConnectionStatsUpdateTime = -1;
> +     /** routableConnectionStats update interval (milliseconds) */
> +     private static final long routableConnectionStatsUpdateInterval = 7 * 
> 1000;  // 7 seconds
>       
>       // The version we were before we restarted.
>       public int lastVersion;
> @@ -3093,4 +3097,20 @@
>                       }
>               }
>       }
> +
> +     /**
> +      * Update hadRoutableConnectionCount/routableConnectionCheckCount on 
> peers if the timer has expired
> +      */
> +     public void maybeUpdatePeerNodeRoutableConnectionStats(long now) {
> +             if(now > nextRoutableConnectionStatsUpdateTime) {
> +                     if(peers != null && -1 != 
> nextRoutableConnectionStatsUpdateTime) {
> +                             PeerNode[] peerList = peers.myPeers;
> +                             for(int i=0;i<peerList.length;i++) {
> +                                     PeerNode pn = peerList[i];
> +                                     pn.checkRoutableConnectionStatus();
> +                             }
> +                     }
> +                     nextRoutableConnectionStatsUpdateTime = now + 
> routableConnectionStatsUpdateInterval;
> +             }
> +     }
>  }
> 
> Modified: trunk/freenet/src/freenet/node/PacketSender.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/PacketSender.java  2006-10-22 01:52:16 UTC 
> (rev 10685)
> +++ trunk/freenet/src/freenet/node/PacketSender.java  2006-10-22 18:27:14 UTC 
> (rev 10686)
> @@ -155,6 +155,7 @@
>          node.maybeUpdateOldestNeverConnectedPeerAge(now);
>          node.maybeUpdatePeerManagerUserAlertStats(now);
>          node.maybeUpdateNodeIOStats(now);
> +        node.maybeUpdatePeerNodeRoutableConnectionStats(now);
>          long nextActionTime = Long.MAX_VALUE;
>          long oldTempNow = now;
>          for(int i=0;i<nodes.length;i++) {
> 
> Modified: trunk/freenet/src/freenet/node/PeerNode.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/PeerNode.java      2006-10-22 01:52:16 UTC 
> (rev 10685)
> +++ trunk/freenet/src/freenet/node/PeerNode.java      2006-10-22 18:27:14 UTC 
> (rev 10686)
> @@ -307,6 +307,12 @@
>      /** Total low-level output bytes */
>      private long totalBytesOut;
>      
> +    /** Times had routable connection when checked */
> +    private long hadRoutableConnectionCount;
> +    
> +    /** Times checked for routable connection */
> +    private long routableConnectionCheckCount;
> +    
>      private static boolean logMINOR;
>      
>      /**
> @@ -571,6 +577,20 @@
>               isListenOnly = 
> Fields.stringToBool(metadata.get("isListenOnly"), false);
>               isBurstOnly = Fields.stringToBool(metadata.get("isBurstOnly"), 
> false);
>               allowLocalAddresses = 
> Fields.stringToBool(metadata.get("allowLocalAddresses"), false);
> +             String tempHadRoutableConnectionCountString = 
> metadata.get("hadRoutableConnectionCount");
> +             if(tempHadRoutableConnectionCountString != null) {
> +                     long tempHadRoutableConnectionCount = 
> Long.parseLong(tempHadRoutableConnectionCountString);
> +                     hadRoutableConnectionCount = 
> tempHadRoutableConnectionCount;
> +             } else {
> +                     hadRoutableConnectionCount = 0;
> +             }
> +             String tempRoutableConnectionCheckCountString = 
> metadata.get("routableConnectionCheckCount");
> +             if(tempRoutableConnectionCheckCountString != null) {
> +                     long tempRoutableConnectionCheckCount = 
> Long.parseLong(tempRoutableConnectionCheckCountString);
> +                     routableConnectionCheckCount = 
> tempRoutableConnectionCheckCount;
> +             } else {
> +                     routableConnectionCheckCount = 0;
> +             }
>               }
>          } else {
>              neverConnected = true;
> @@ -1867,6 +1887,10 @@
>               fs.put("isBurstOnly", "true");
>       if(allowLocalAddresses)
>               fs.put("allowLocalAddresses", "true");
> +     if(hadRoutableConnectionCount > 0)
> +             fs.put("hadRoutableConnectionCount", 
> Long.toString(hadRoutableConnectionCount));
> +     if(routableConnectionCheckCount > 0)
> +             fs.put("routableConnectionCheckCount", 
> Long.toString(routableConnectionCheckCount));
>       return fs;
>       }
>  
> @@ -1889,6 +1913,10 @@
>                       fs.put("routingBackoffPercent", 
> Double.toString(backedOffPercent.currentValue() * 100));
>                       fs.put("routingBackoff", 
> Long.toString((Math.max(routingBackedOffUntil - now, 0))));
>                       fs.put("routingBackoffLength", 
> Integer.toString(routingBackoffLength));
> +                     fs.put("overloadProbability", 
> Double.toString(getPRejected() * 100));
> +                     fs.put("percentTimeRoutableConnection", 
> Double.toString(getPercentTimeRoutableConnection() * 100));
> +                     fs.put("totalBytesIn", Long.toString(totalBytesIn));
> +                     fs.put("totalBytesOut", Long.toString(totalBytesOut));
>               }
>               fs.put("status", getPeerNodeStatusString());
>               return fs;
> @@ -2938,4 +2966,28 @@
>               }
>          node.peers.writePeers();
>       }
> +     
> +     public void checkRoutableConnectionStatus() {
> +             synchronized(this) {
> +                     if(isRoutable()) {
> +                             hadRoutableConnectionCount += 1;
> +                     }
> +                     routableConnectionCheckCount += 1;
> +                     // prevent the average from moving too slowly by 
> capping the checkcount to 200000,
> +                     // which, at 7 seconds between counts, works out to 
> about 2 weeks.  This also prevents
> +                     // knowing how long we've had a particular peer long 
> term.
> +                     if(routableConnectionCheckCount >= 200000) {
> +                             // divide both sides by the same amount to keep 
> the same ratio
> +                             hadRoutableConnectionCount = 
> hadRoutableConnectionCount / 2;
> +                             routableConnectionCheckCount = 
> routableConnectionCheckCount / 2;
> +                     }
> +             }
> +     }
> +     
> +     public synchronized double getPercentTimeRoutableConnection() {
> +             if(hadRoutableConnectionCount == 0) {
> +                     return 0.0;
> +             }
> +             return ((double) hadRoutableConnectionCount) / 
> routableConnectionCheckCount;
> +     }
>  }
> 
> Modified: trunk/freenet/src/freenet/node/PeerNodeStatus.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/PeerNodeStatus.java        2006-10-22 
> 01:52:16 UTC (rev 10685)
> +++ trunk/freenet/src/freenet/node/PeerNodeStatus.java        2006-10-22 
> 18:27:14 UTC (rev 10686)
> @@ -81,6 +81,8 @@
>       private long totalBytesIn;
>       
>       private long totalBytesOut;
> +     
> +     private double percentTimeRoutableConnection;
>  
>       public PeerNodeStatus(PeerNode peerNode) {
>               this.name = peerNode.getName();
> @@ -115,6 +117,7 @@
>               this.privateDarknetCommentNote = 
> peerNode.getPrivateDarknetCommentNote();
>               this.totalBytesIn = peerNode.getTotalInputBytes();
>               this.totalBytesOut = peerNode.getTotalOutputBytes();
> +             this.percentTimeRoutableConnection = 
> peerNode.getPercentTimeRoutableConnection();
>       }
>  
>       /**
> @@ -332,4 +335,8 @@
>       public long getTotalOutputBytes() {
>               return totalBytesOut;
>       }
> +     
> +     public double getPercentTimeRoutableConnection() {
> +             return percentTimeRoutableConnection;
> +     }
>  }
> 
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20061025/e4cc442e/attachment.pgp>

Reply via email to