Author: bombe
Date: 2006-07-29 15:06:24 +0000 (Sat, 29 Jul 2006)
New Revision: 9809

Modified:
   trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
Log:
consistent display of nodes' statuses


Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-07-29 14:39:17 UTC (rev 9808)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-07-29 15:06:24 UTC (rev 9809)
@@ -51,6 +51,23 @@
                return "GET, POST";
        }

+       /**
+        * Counts the peers in <code>peerNodes</code> that have the specified
+        * status.
+        * @param peerNodeStatuses The peer nodes' statuses
+        * @param status The status to count
+        * @return The number of peers that have the specified status.
+        */
+       private int getPeerStatusCount(int[] peerNodeStatuses, int status) {
+               int count = 0;
+               for (int peerIndex = 0, peerCount = peerNodeStatuses.length; 
peerIndex < peerCount; peerIndex++) {
+                       if (peerNodeStatuses[peerIndex] == status) {
+                               count++;
+                       }
+               }
+               return count;
+       }
+
        public void handleGet(URI uri, ToadletContext ctx) throws 
ToadletContextClosedException, IOException, RedirectException {

                String path = uri.getPath();
@@ -68,17 +85,25 @@
                final boolean advancedEnabled = 
node.getToadletContainer().isAdvancedDarknetEnabled();

                /* gather connection statistics */
-               int numberOfConnected = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_CONNECTED);
-               int numberOfRoutingBackedOff = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF);
-               int numberOfTooNew = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_TOO_NEW);
-               int numberOfTooOld = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_TOO_OLD);
-               int numberOfDisconnected = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_DISCONNECTED);
-               int numberOfNeverConnected = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_NEVER_CONNECTED);
-               int numberOfDisabled = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_DISABLED);
-               int numberOfBursting = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_BURSTING);
-               int numberOfListening = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_LISTENING);
-               int numberOfListenOnly = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_LISTEN_ONLY);
+               PeerNode[] peerNodes = node.getDarknetConnections();
+
+               /* copy peer node statuses for consistent display. */
+               int[] peerNodeStatuses = new int[peerNodes.length];
+               for (int peerIndex = 0, peerCount = peerNodes.length; peerIndex 
< peerCount; peerIndex++) {
+                       peerNodeStatuses[peerIndex] = 
peerNodes[peerIndex].getPeerNodeStatus();
+               }

+               int numberOfConnected = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_CONNECTED);
+               int numberOfRoutingBackedOff = 
getPeerStatusCount(peerNodeStatuses, Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF);
+               int numberOfTooNew = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_TOO_NEW);
+               int numberOfTooOld = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_TOO_OLD);
+               int numberOfDisconnected = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_DISCONNECTED);
+               int numberOfNeverConnected = 
getPeerStatusCount(peerNodeStatuses, Node.PEER_NODE_STATUS_NEVER_CONNECTED);
+               int numberOfDisabled = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_DISABLED);
+               int numberOfBursting = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_BURSTING);
+               int numberOfListening = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_LISTENING);
+               int numberOfListenOnly = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_LISTEN_ONLY);
+               
                int numberOfSimpleConnected = numberOfConnected + 
numberOfRoutingBackedOff;
                int numberOfNotConnected = numberOfTooNew + numberOfTooOld + 
numberOfDisconnected + numberOfNeverConnected + numberOfDisabled + 
numberOfBursting + numberOfListening + numberOfListenOnly;
                String titleCountString = null;
@@ -93,8 +118,6 @@
                ctx.getPageMaker().makeHead(buf, pageTitle);

                // FIXME! We need some nice images
-               PeerNode[] peerNodes = node.getDarknetConnections();
-               
                long now = System.currentTimeMillis();

                node.alerts.toSummaryHtml(buf);
@@ -283,11 +306,11 @@
                                Object[] row = new Object[10];  // where [0] is 
the pn object and 9 is the node name only for sorting!
                                rows[i] = row;

-                               Object status = new 
Integer(pn.getPeerNodeStatus());
+                               Object status = new 
Integer(peerNodeStatuses[i]);
                                long idle = pn.timeLastRoutable();
                                if(pn.isRoutable()) {
                                        idle = pn.timeLastConnectionCompleted();
-                               } else if(((Integer) status).intValue() == 
Node.PEER_NODE_STATUS_NEVER_CONNECTED) {
+                               } else if(peerNodeStatuses[i] == 
Node.PEER_NODE_STATUS_NEVER_CONNECTED) {
                                        idle = pn.getPeerAddedTime();
                                }
                                String lastBackoffReasonOutputString = "";
@@ -350,7 +373,7 @@
                                        }
                                }
                                String statusString = ((PeerNode) 
row[0]).getPeerNodeStatusString();
-                               if(!advancedEnabled && (((PeerNode) 
row[0]).getPeerNodeStatus() == Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF)) {
+                               if(!advancedEnabled && (((Integer) 
row[2]).intValue() == Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF)) {
                                        statusString = "BUSY";
                                }
                                row[2] = "<span class=\""+((PeerNode) 
row[0]).getPeerNodeStatusCSSClassName()+"\">"+statusString+arkAsterisk+"</span>";


Reply via email to