package org.neodatis.odb.core.layers.layer3;

import org.neodatis.odb.OID;

public interface IIdManager {

	/** Gets an id for an object (instance)
	 * 
	 * @param objectPosition the object position (instance) 
	 * @return The id
	 * 
	 */
	public abstract OID getNextObjectId(long objectPosition) ;

	/** Gets an id for a class
	 * 
	 * @param objectPosition the object position (class) 
	 * @return The id
	 *
	 */
	public abstract OID getNextClassId(long objectPosition);

	public abstract void updateObjectPositionForOid(OID oid, long objectPosition, boolean writeInTransaction);

	public abstract void updateClassPositionForId(OID classId, long objectPosition, boolean writeInTransaction);

	public abstract void updateIdStatus(OID id, byte newStatus);

	public abstract void reserveIds(long nbIds);

	public abstract long getObjectPositionWithOid(OID oid, boolean useCache);

	public void clear();

	/** To check if the id block must shift: that a new id block must be created
	 * 
	 * @return a boolean value to check if block of id is full
	 */
	public boolean mustShift();

	public OID consultNextOid();

}
 

Ads help maintain this website.