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;
+ }
}