/**
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2004 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.common.util;

/**
 * Long型の連番を生成するシーケンスジェネレータ
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class LongSequenceGenerator {
	/** シーケンス番号 */
	private static long seqno = 0;
	
	/**
	 * シーケンス番号を初期化する
	 * 何も指定せずに使用すれば，自動的に0から採番される
	 * @param sn 新しい初期値
	 */
	public void init(long sn) {
		synchronized(this) {
			seqno = sn;
		}
	}
	/**
	 * シーケンス番号を返す
	 * 採番と同時に，シーケンス番号を1つ増加させる
	 * @return シーケンス番号
	 */
	public long getSeqNo() {
		synchronized(this) {
			long sn = seqno;
			seqno++;
			
			return sn;
		}
	}
}
