Mercurial > hg > blitz_stable
diff src/org/dancres/blitz/entry/InstanceSwitchListener.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/entry/InstanceSwitchListener.java Sat Mar 21 11:00:06 2009 +0000 @@ -0,0 +1,57 @@ +package org.dancres.blitz.entry; + +import org.dancres.blitz.stats.Stat; +import org.dancres.blitz.stats.SwitchListener; +import org.dancres.blitz.stats.Switch; +import org.dancres.blitz.stats.StatsBoard; +import org.dancres.blitz.stats.InstanceSwitch; +import org.dancres.blitz.stats.InstanceCount; +import org.dancres.blitz.stats.SwitchSettings; + +class InstanceSwitchListener implements SwitchListener { + private String theInstanceType; + private InstanceCount theCount; + + InstanceSwitchListener(String aType, int anInitialCount) { + theInstanceType = aType; + theCount = new InstanceCount(aType, anInitialCount); + + SwitchSettings.get().add(this); + } + + public synchronized void switchFlipped(Switch aSwitch) { + if (aSwitch instanceof InstanceSwitch) { + InstanceSwitch mySwitch = (InstanceSwitch) aSwitch; + + if ((mySwitch.getType().equals(theInstanceType)) || + (mySwitch.isWildcard())) { + + if (mySwitch.isOn()) { + StatsBoard.get().add(theCount); + } else + StatsBoard.get().remove(theCount); + } + } + } + + synchronized void wrote() { + theCount.wrote(); + } + + synchronized void took() { + theCount.took(); + } + + Stat getInstanceStat() { + return theCount.generate(); + } + + synchronized int getTotal() { + return theCount.getCount(); + } + + void destroy() { + SwitchSettings.get().remove(this); + StatsBoard.get().remove(theCount); + } +}