/*
* Copyright (c) 2003, Intracom S.A. - www.intracom.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* This package and its source code is available at www.jboss.org
**/
package org.jboss.jmx.adaptor.snmp.agent;
/**
* Simple, thread safe counter implementattion with accessor methods.
*
* (Maybe replace with EDU.oswego.cs.dl.util.concurrent.SynchronizedLong?)
*
* @version $Revision: 44604 $
*
* @author <a href="mailto:spol@intracom.gr">Spyros Pollatos</a>
* @author <a href="mailto:dimitris@jboss.org">Dimitris Andreadis</a>
*/
public final class Counter
{
/** the internal counter */
private long count;
/**
* CTOR - initialises the counter to the provided value.
*
* @param countStart the starting counter value
*/
public Counter(long countStart)
{
this.count = countStart;
}
/**
* Returns the current value (i.e. the next to be used).
*/
public synchronized long peek()
{
return this.count;
}
/**
* Returns the current value (i.e. the next to be used) and advances
* the counter by one.
*/
public synchronized long advance()
{
return this.count++;
}
} // class Counter