diff src/org/dancres/blitz/stats/StatsBoard.java @ 0:3dc0c5604566

Initial checkin of blitz 2.0 fcs - no installer yet.
author Dan Creswell <dan.creswell@gmail.com>
date Sat, 21 Mar 2009 11:00:06 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/dancres/blitz/stats/StatsBoard.java	Sat Mar 21 11:00:06 2009 +0000
@@ -0,0 +1,63 @@
+package org.dancres.blitz.stats;
+
+import java.util.LinkedList;
+import java.util.Iterator;
+
+import java.util.logging.Logger;
+
+import org.dancres.blitz.Logging;
+
+/**
+   All available performance statistics are held here.
+ */
+public class StatsBoard {
+    static final Logger theLogger =
+        Logging.newLogger("org.dancres.blitz.stats.StatsBoard");
+
+    private static StatsBoard theBoard = new StatsBoard();
+
+    private LinkedList theStatGenerators = new LinkedList();
+
+    private long theNextId = 1;
+
+    private StatsBoard() {
+        add(new MemoryStat());
+        add(new HostStat());
+        add(new ThreadStat());
+    }
+
+    public static StatsBoard get() {
+        return theBoard;
+    }
+
+    public synchronized void add(StatGenerator aStat) {
+        if (! theStatGenerators.contains(aStat)) {
+            if (aStat.getId() == StatGenerator.UNSET_ID)
+                aStat.setId(theNextId++);
+
+            theStatGenerators.add(aStat);
+        }
+    }
+
+    public synchronized void remove(StatGenerator aStat) {
+        theStatGenerators.remove(aStat);
+    }
+
+    public Stat[] getStats() {
+        StatGenerator[] myGenerators;
+
+        synchronized(this) {
+            myGenerators = new StatGenerator[theStatGenerators.size()];
+            myGenerators =
+                    (StatGenerator[]) theStatGenerators.toArray(myGenerators);
+        }
+
+        Stat[] myStats = new Stat[myGenerators.length];
+
+        for (int i = 0; i < myGenerators.length; i++) {
+            myStats[i] = myGenerators[i].generate();
+        }
+
+        return myStats;
+    }
+}