Mercurial > hg > blitz_condensed
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; + } +}