Author: toad
Date: 2007-12-13 23:21:52 +0000 (Thu, 13 Dec 2007)
New Revision: 16514

Modified:
   trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
   trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
   trunk/freenet/src/freenet/node/PeerNodeStatus.java
Log:
List seeding nodes and seednodes on the stats page.

Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java       
2007-12-13 23:12:18 UTC (rev 16513)
+++ trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java       
2007-12-13 23:21:52 UTC (rev 16514)
@@ -104,7 +104,23 @@
                }
                return count;
        }
+       
+       private int getCountSeedServers(PeerNodeStatus[] peerNodeStatuses) {
+               int count = 0;
+               for(int peerIndex = 0; peerIndex < peerNodeStatuses.length; 
peerIndex++) {
+                       if(peerNodeStatuses[peerIndex].isSeedServer()) count++;
+               }
+               return count;
+       }

+       private int getCountSeedClients(PeerNodeStatus[] peerNodeStatuses) {
+               int count = 0;
+               for(int peerIndex = 0; peerIndex < peerNodeStatuses.length; 
peerIndex++) {
+                       if(peerNodeStatuses[peerIndex].isSeedClient()) count++;
+               }
+               return count;
+       }
+
        public void handleGet(URI uri, HTTPRequest request, ToadletContext ctx) 
throws ToadletContextClosedException, IOException, RedirectException {

                if(!ctx.isAllowedFullAccess()) {
@@ -139,6 +155,8 @@
                int numberOfBursting = getPeerStatusCount(peerNodeStatuses, 
PeerManager.PEER_NODE_STATUS_BURSTING);
                int numberOfListening = getPeerStatusCount(peerNodeStatuses, 
PeerManager.PEER_NODE_STATUS_LISTENING);
                int numberOfListenOnly = getPeerStatusCount(peerNodeStatuses, 
PeerManager.PEER_NODE_STATUS_LISTEN_ONLY);
+               int numberOfSeedServers = getCountSeedServers(peerNodeStatuses);
+               int numberOfSeedClients = getCountSeedClients(peerNodeStatuses);

                HTMLNode pageNode = 
ctx.getPageMaker().getPageNode(l10n("fullTitle", new String[] { "name" }, new 
String[] { node.getMyName() }), ctx);
                HTMLNode contentNode = 
ctx.getPageMaker().getContentNode(pageNode);
@@ -236,7 +254,7 @@

                        drawPeerStatsBox(peerStatsInfobox, advancedModeEnabled, 
numberOfConnected, numberOfRoutingBackedOff, 
                                        numberOfTooNew, numberOfTooOld, 
numberOfDisconnected, numberOfNeverConnected, numberOfDisabled, 
-                                       numberOfBursting, numberOfListening, 
numberOfListenOnly);
+                                       numberOfBursting, numberOfListening, 
numberOfListenOnly, numberOfSeedServers, numberOfSeedClients);

                        // Bandwidth box
                        HTMLNode bandwidthInfobox = 
nextTableCell.addChild("div", "class", "infobox");
@@ -567,7 +585,7 @@
        private void drawPeerStatsBox(HTMLNode peerStatsInfobox, boolean 
advancedModeEnabled, int numberOfConnected, 
                        int numberOfRoutingBackedOff, int numberOfTooNew, int 
numberOfTooOld, int numberOfDisconnected, 
                        int numberOfNeverConnected, int numberOfDisabled, int 
numberOfBursting, int numberOfListening, 
-                       int numberOfListenOnly) {
+                       int numberOfListenOnly, int numberOfSeedServers, int 
numberOfSeedClients) {

                peerStatsInfobox.addChild("div", "class", "infobox-header", 
l10n("peerStatsTitle"));
                HTMLNode peerStatsContent = peerStatsInfobox.addChild("div", 
"class", "infobox-content");
@@ -633,7 +651,18 @@
                                        new String[] { "peer_listen_only", 
l10nDark("listenOnly"), "border-bottom: 1px dotted; cursor: help;" }, 
l10nDark("listenOnlyShort"));
                        peerStatsListenOnlyListItem.addChild("span", ":\u00a0" 
+ numberOfListenOnly);
                }
-               
+               if (numberOfSeedServers > 0) {
+                       HTMLNode peerStatsSeedServersListItem = 
peerStatsList.addChild("li").addChild("span");
+                       peerStatsSeedServersListItem.addChild("span", new 
String[] { "class", "title", "style" },
+                                       new String[] { "peer_listening" /* 
FIXME */, l10nDark("seedServers"), "border-bottom: 1px dotted; cursor: help;" 
}, l10nDark("seedServersShort"));
+                       peerStatsSeedServersListItem.addChild("span", ":\u00a0" 
+ numberOfSeedServers);
+               }
+               if (numberOfSeedClients > 0) {
+                       HTMLNode peerStatsSeedClientsListItem = 
peerStatsList.addChild("li").addChild("span");
+                       peerStatsSeedClientsListItem.addChild("span", new 
String[] { "class", "title", "style" },
+                                       new String[] { "peer_listening" /* 
FIXME */, l10nDark("seedClients"), "border-bottom: 1px dotted; cursor: help;" 
}, l10nDark("seedClientsShort"));
+                       peerStatsSeedClientsListItem.addChild("span", ":\u00a0" 
+ numberOfSeedClients);
+               }
        }

        private static String l10n(String key) {

Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
--- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2007-12-13 
23:12:18 UTC (rev 16513)
+++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2007-12-13 
23:21:52 UTC (rev 16514)
@@ -211,6 +211,10 @@
 DarknetConnectionsToadlet.referenceCopyWarning=Node reference must be copied 
${bold}AS IS${/bold}. Modifying it will make it ${bold}useless${/bold}.
 DarknetConnectionsToadlet.remove=Remove it!
 DarknetConnectionsToadlet.removePeers=Remove selected peers
+DarknetConnectionsToadlet.seedClients=Nodes we are using as seednodes.
+DarknetConnectionsToadlet.seedClientsShort=Seed nodes
+DarknetConnectionsToadlet.seedServers=Nodes we are acting as a seednode for.
+DarknetConnectionsToadlet.seedServersShort=Seeding for
 DarknetConnectionsToadlet.selectAction=-- Select action --
 DarknetConnectionsToadlet.sendMessageTitle=Send Node to Node Text Message
 DarknetConnectionsToadlet.sendMessageToPeers=Send N2NTM to selected peers

Modified: trunk/freenet/src/freenet/node/PeerNodeStatus.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNodeStatus.java  2007-12-13 23:12:18 UTC 
(rev 16513)
+++ trunk/freenet/src/freenet/node/PeerNodeStatus.java  2007-12-13 23:21:52 UTC 
(rev 16514)
@@ -81,6 +81,10 @@
        private long clockDelta;

        private final boolean recordStatus;
+       
+       private final boolean isSeedServer;
+       
+       private final boolean isSeedClient;

        PeerNodeStatus(PeerNode peerNode) {
                Peer p = peerNode.getPeer();
@@ -121,6 +125,8 @@
                this.throttle = peerNode.getThrottle();
                this.clockDelta = peerNode.getClockDelta();
                this.recordStatus = peerNode.recordStatus();
+               this.isSeedClient = peerNode instanceof SeedClientPeerNode;
+               this.isSeedServer = peerNode instanceof SeedServerPeerNode;
        }

        /**
@@ -343,4 +349,12 @@
        public boolean recordStatus() {
                return recordStatus;
        }
+
+       public boolean isSeedServer() {
+               return isSeedServer;
+       }
+
+       public boolean isSeedClient() {
+               return isSeedClient;
+       }
 }


Reply via email to