This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
envoy/common/src/main/java/envoy/data/IDGenerator.java

53 lines
1.0 KiB
Java

package envoy.data;
import java.io.Serializable;
/**
* Generates increasing IDs between two numbers.
*
* @author Kai S. K. Engelbart
* @since Envoy Common v0.2-alpha
*/
public final class IDGenerator implements Serializable {
private final long end;
private long current;
private static final long serialVersionUID = 0L;
/**
* Creates an instance of {@link IDGenerator}.
*
* @param begin the first ID
* @param size the amount of IDs to provide
* @since Envoy Common v0.2-alpha
*/
public IDGenerator(long begin, long size) {
current = begin;
end = begin + size;
}
@Override
public String toString() {
return String.format("IDGenerator[current=%d,end=%d]", current, end);
}
/**
* @return {@code true} if there are unused IDs remaining
* @since Envoy Common v0.2-alpha
*/
public boolean hasNext() {
return current < end;
}
/**
* @return the next ID
* @since Envoy Common v0.2-alpha
*/
public long next() {
if (!hasNext())
throw new IllegalStateException("All IDs have been used");
return current++;
}
}