comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:3dc0c5604566
1 package org.dancres.blitz.stats;
2
3 import java.util.LinkedList;
4 import java.util.Iterator;
5
6 import java.util.logging.Logger;
7
8 import org.dancres.blitz.Logging;
9
10 /**
11 All available performance statistics are held here.
12 */
13 public class StatsBoard {
14 static final Logger theLogger =
15 Logging.newLogger("org.dancres.blitz.stats.StatsBoard");
16
17 private static StatsBoard theBoard = new StatsBoard();
18
19 private LinkedList theStatGenerators = new LinkedList();
20
21 private long theNextId = 1;
22
23 private StatsBoard() {
24 add(new MemoryStat());
25 add(new HostStat());
26 add(new ThreadStat());
27 }
28
29 public static StatsBoard get() {
30 return theBoard;
31 }
32
33 public synchronized void add(StatGenerator aStat) {
34 if (! theStatGenerators.contains(aStat)) {
35 if (aStat.getId() == StatGenerator.UNSET_ID)
36 aStat.setId(theNextId++);
37
38 theStatGenerators.add(aStat);
39 }
40 }
41
42 public synchronized void remove(StatGenerator aStat) {
43 theStatGenerators.remove(aStat);
44 }
45
46 public Stat[] getStats() {
47 StatGenerator[] myGenerators;
48
49 synchronized(this) {
50 myGenerators = new StatGenerator[theStatGenerators.size()];
51 myGenerators =
52 (StatGenerator[]) theStatGenerators.toArray(myGenerators);
53 }
54
55 Stat[] myStats = new Stat[myGenerators.length];
56
57 for (int i = 0; i < myGenerators.length; i++) {
58 myStats[i] = myGenerators[i].generate();
59 }
60
61 return myStats;
62 }
63 }