01: /*
02: * Copyright (c) 2003, Intracom S.A. - www.intracom.com
03: *
04: * This library is free software; you can redistribute it and/or
05: * modify it under the terms of the GNU Lesser General Public
06: * License as published by the Free Software Foundation; either
07: * version 2 of the License, or (at your option) any later version
08: *
09: * This library is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12: * Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public
15: * License along with this library; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: * This package and its source code is available at www.jboss.org
19: **/
20: package org.jboss.jmx.adaptor.snmp.agent;
21:
22: /**
23: * Simple, thread safe counter implementattion with accessor methods.
24: *
25: * (Maybe replace with EDU.oswego.cs.dl.util.concurrent.SynchronizedLong?)
26: *
27: * @version $Revision: 44599 $
28: *
29: * @author <a href="mailto:spol@intracom.gr">Spyros Pollatos</a>
30: * @author <a href="mailto:dimitris@jboss.org">Dimitris Andreadis</a>
31: */
32: public final class Counter {
33: /** the internal counter */
34: private long count;
35:
36: /**
37: * CTOR - initialises the counter to the provided value.
38: *
39: * @param countStart the starting counter value
40: */
41: public Counter(long countStart) {
42: this .count = countStart;
43: }
44:
45: /**
46: * Returns the current value (i.e. the next to be used).
47: */
48: public synchronized long peek() {
49: return this .count;
50: }
51:
52: /**
53: * Returns the current value (i.e. the next to be used) and advances
54: * the counter by one.
55: */
56: public synchronized long advance() {
57: return this .count++;
58: }
59:
60: } // class Counter
|