Author: zothar
Date: 2006-11-26 03:00:26 +0000 (Sun, 26 Nov 2006)
New Revision: 11053

Modified:
   trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
   trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
   trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
Log:
Added unclaimed message counts and node version info to /stats/ page.

Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java       
2006-11-26 02:24:18 UTC (rev 11052)
+++ trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java       
2006-11-26 03:00:26 UTC (rev 11053)
@@ -27,6 +27,16 @@
                }

        }
+       
+       private class STMessageCount {
+               public String messageName;
+               public int messageCount;
+               
+               STMessageCount( String messageName, int messageCount ) {
+                       this.messageName = messageName;
+                       this.messageCount = messageCount;
+               }
+       }

        private final Node node;
        private final NodeClientCore core;
@@ -436,6 +446,56 @@
                 jvmStatsList.addChild("li", "Available CPUs:\u00a0" + 
availableCpus);
                 jvmStatsList.addChild("li", "Running threads:\u00a0" + 
thousendPoint.format(threadCount));
             }
+                       
+                       // unclaimedFIFOMessageCounts box
+                       if(advancedEnabled) {
+                               overviewTableRow = overviewTable.addChild("tr");
+                               nextTableCell = overviewTableRow.addChild("td", 
"class", "first");
+                               Map unclaimedFIFOMessageCountsMap = 
node.getUSM().getUnclaimedFIFOMessageCounts();
+                               STMessageCount[] 
unclaimedFIFOMessageCountsArray = new 
STMessageCount[unclaimedFIFOMessageCountsMap.size()];
+                               int i = 0;
+                               int totalCount = 0;
+                               for (Iterator messageCounts = 
unclaimedFIFOMessageCountsMap.keySet().iterator(); messageCounts.hasNext(); ) {
+                                       String messageName = (String) 
messageCounts.next();
+                                       int messageCount = ((Integer) 
unclaimedFIFOMessageCountsMap.get(messageName)).intValue();
+                                       totalCount = totalCount + messageCount;
+                                       unclaimedFIFOMessageCountsArray[i++] = 
new STMessageCount( messageName, messageCount );
+                               }
+                               Arrays.sort(unclaimedFIFOMessageCountsArray, 
new Comparator() {
+                                       public int compare(Object first, Object 
second) {
+                                               STMessageCount firstCount = 
(STMessageCount) first;
+                                               STMessageCount secondCount = 
(STMessageCount) second;
+                                               return secondCount.messageCount 
- firstCount.messageCount;  // sort in descending order
+                                       }
+                               });
+                               
+                               HTMLNode unclaimedFIFOMessageCountsInfobox = 
nextTableCell.addChild("div", "class", "infobox");
+                               
unclaimedFIFOMessageCountsInfobox.addChild("div", "class", "infobox-header", 
"unclaimedFIFO Message Counts");
+                               HTMLNode 
unclaimedFIFOMessageCountsInfoboxContent = 
unclaimedFIFOMessageCountsInfobox.addChild("div", "class", "infobox-content");
+                               HTMLNode unclaimedFIFOMessageCountsList = 
unclaimedFIFOMessageCountsInfoboxContent.addChild("ul");
+                               for (int countsArrayIndex = 0, countsArrayCount 
= unclaimedFIFOMessageCountsArray.length; countsArrayIndex < countsArrayCount; 
countsArrayIndex++) {
+                                       STMessageCount messageCountItem = 
(STMessageCount) unclaimedFIFOMessageCountsArray[countsArrayIndex];
+                                       int thisMessageCount = 
messageCountItem.messageCount;
+                                       double thisMessagePercentOfTotal = 
((double) thisMessageCount) / ((double) totalCount);
+                                       
unclaimedFIFOMessageCountsList.addChild("li", "" + messageCountItem.messageName 
+ ":\u00a0" + thisMessageCount + "\u00a0(" + 
fix3p1pct.format(thisMessagePercentOfTotal) + ')');
+                               }
+                               unclaimedFIFOMessageCountsList.addChild("li", 
"Unclaimed Messages Considered:\u00a0" + totalCount);
+                               nextTableCell = overviewTableRow.addChild("td");
+                       }
+
+            // node version information box
+            if (advancedEnabled) {
+                HTMLNode versionInfobox = nextTableCell.addChild("div", 
"class", "infobox");
+                versionInfobox.addChild("div", "class", "infobox-header", 
"Node Version Information");
+                HTMLNode versionInfoboxContent = 
versionInfobox.addChild("div", "class", "infobox-content");
+                               versionInfoboxContent.addChild("#", "Freenet " 
+ Version.nodeVersion + " Build #" + Version.buildNumber() + " r" + 
Version.cvsRevision);
+                               versionInfoboxContent.addChild("br");
+                               if(NodeStarter.extBuildNumber < 
NodeStarter.RECOMMENDED_EXT_BUILD_NUMBER) {
+                                       versionInfoboxContent.addChild("#", 
"Freenet-ext Build #" + NodeStarter.extBuildNumber + '(' + 
NodeStarter.RECOMMENDED_EXT_BUILD_NUMBER + ") r" + 
NodeStarter.extRevisionNumber);
+                               } else {
+                                       versionInfoboxContent.addChild("#", 
"Freenet-ext Build #" + NodeStarter.extBuildNumber + " r" + 
NodeStarter.extRevisionNumber);
+                               }
+            }
                }

                this.writeReply(ctx, 200, "text/html", "OK", 
pageNode.generate());

Modified: trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java  2006-11-26 
02:24:18 UTC (rev 11052)
+++ trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java  2006-11-26 
03:00:26 UTC (rev 11053)
@@ -555,10 +555,11 @@
                HTMLNode versionContent = 
ctx.getPageMaker().getContentNode(versionBox);
                versionContent.addChild("#", "Freenet " + Version.nodeVersion + 
" Build #" + Version.buildNumber() + " r" + Version.cvsRevision);
                versionContent.addChild("br");
-               
if(NodeStarter.extBuildNumber<NodeStarter.RECOMMENDED_EXT_BUILD_NUMBER)
+               if(NodeStarter.extBuildNumber < 
NodeStarter.RECOMMENDED_EXT_BUILD_NUMBER) {
                        versionContent.addChild("#", "Freenet-ext Build #" + 
NodeStarter.extBuildNumber + '(' + NodeStarter.RECOMMENDED_EXT_BUILD_NUMBER + 
") r" + NodeStarter.extRevisionNumber);
-               else
+               } else {
                        versionContent.addChild("#", "Freenet-ext Build #" + 
NodeStarter.extBuildNumber + " r" + NodeStarter.extRevisionNumber);
+               }
                versionContent.addChild("br");
                HTMLNode shutdownForm = versionContent.addChild("form", new 
String[] { "action", "method" }, new String[] { ".", "GET" });
                shutdownForm.addChild("input", new String[] { "type", "name" }, 
new String[] { "hidden", "exit" });

Modified: trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketManager.java     2006-11-26 
02:24:18 UTC (rev 11052)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketManager.java     2006-11-26 
03:00:26 UTC (rev 11053)
@@ -677,4 +677,20 @@
        public synchronized int getUnclaimedFIFOSize() {
                return _unclaimed.size();
        }
+       
+       public synchronized Map getUnclaimedFIFOMessageCounts() {
+               Map messageCounts = new HashMap();
+               for (ListIterator i = _unclaimed.listIterator(); i.hasNext();) {
+                       Message m = (Message) i.next();
+                       String messageName = m.getSpec().getName();
+                       Integer messageCount = (Integer) 
messageCounts.get(messageName);
+                       if (messageCount == null) {
+                               messageCounts.put(messageName, new Integer(1) );
+                       } else {
+                               messageCount = new 
Integer(messageCount.intValue() + 1);
+                               messageCounts.put(messageName, messageCount );
+                       }
+               }
+               return messageCounts;
+       }
 }


Reply via email to