view src/org/dancres/blitz/stats/InstanceCount.java @ 27:511648fa4d64 Version 2.1

Version to 2.1
author Dan Creswell <dan.creswell@gmail.com>
date Mon, 04 Jan 2010 13:00:40 +0000
parents 3dc0c5604566
children
line wrap: on
line source

package org.dancres.blitz.stats;

/**
   <p>Tracks the number of instance of a particular type within a Blitz
   instance.  The instance count accounts for writes and takes but does not
   account for lease expired entries because the cleanup of lease expired
   entries is done lazily.  Thus the instance counts should be treated as
   a guide not an exact number.</p>
 */
public class InstanceCount implements Stat, StatGenerator {
    private long theId = StatGenerator.UNSET_ID;

    private String theType;
    private int theCount;

    public InstanceCount(String aType, int aCount) {
        theType = aType;
        theCount = aCount;
    }

    private InstanceCount(long anId, String aType, int aCount) {
        theId = anId;
        theType = aType;
        theCount = aCount;
    }

    public void setId(long anId) {
        theId = anId;
    }

    public long getId() {
        return theId;
    }

    public synchronized Stat generate() {
        InstanceCount myStat = new InstanceCount(theId, theType, theCount);
        return myStat;
    }

    public String getType() {
        return theType;
    }

    public int getCount() {
        return theCount;
    }

    public synchronized void wrote() {
        ++theCount;
    }

    public synchronized void took() {
        --theCount;
    }

    public String toString() {
        return "Total instance of type " + theType + " is " + theCount;
    }
}