FileDocCategorySizeDatePackage
SnmpRequestCounter.javaAPI DocJava SE 5 API1113Fri Aug 26 14:55:06 BST 2005com.sun.jmx.snmp.daemon

SnmpRequestCounter.java

/*
 * @(#)file      SnmpRequestCounter.java
 * @(#)author    Sun Microsystems, Inc.
 * @(#)version   1.4
 * @(#)date      05/08/26
 *
 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 */
// Copyright (c) 1995-96 by Cisco Systems, Inc.

package com.sun.jmx.snmp.daemon;


/**
 * A static instance of this class is usually created.  It contains a 
 * counter that is incremented every time it is accessed.  For example,
 * this class can be used in <CODE>SnmpSession</CODE> to generate a request 
 * identifier that is used to identify a message in a client-server session.
 * The class wraps around when it reaches the maximum positive value, 2^31 - 1.
 */

final class SnmpRequestCounter {
	/**
	 * A counter with value between 1...2^31-1.
	 */
	int reqid = 0 ;

	public SnmpRequestCounter() {}

	/**
	 * Returns the next request identifier.
	 * @return next request identifier.  The value wraps to 1 if it reaches negative value.
	 */
	public synchronized int getNewId() {
		if (++reqid  < 0)
			reqid = 1 ;
		return reqid ;
	}
}