package org.exist.xmldb;

import org.xmldb.api.base.Service;
import org.xmldb.api.base.XMLDBException;

/**
 * A service to manage the database instance. The service defines
 * a single method shutdown() to shut down the database instance
 * used by the current driver.
 * 
 */
public interface DatabaseInstanceManager extends Service {
	
	/**
	 * Immediately shutdown the current database instance.
	 * This current user should be a member of the "dba" group
	 * or an exception will be thrown.
	 * 
	 * @throws XMLDBException
	 */
	public void shutdown() throws XMLDBException;
	
	/**
	 * Shutdown the current database instance after the specified
	 * delay (in milliseconds).
	 * This current user should be a member of the "dba" group
	 * or an exception will be thrown.
	 * 
	 * @throws XMLDBException
	 */
	public void shutdown(long delay) throws XMLDBException;
	
	public DatabaseStatus getStatus() throws XMLDBException;
	
	/**
	 * Returns true if the database instance is running local, i.e. in
	 * the same thread as this service.
	 *  
	 * @return true if the database instance is running local
	 */
	public boolean isLocalInstance();
	
	/**
	 * Returns true if XACML is enabled for the database instance. 
	 *
	 * @return True if XACML is enabled
	 */
	public boolean isXACMLEnabled() throws XMLDBException;
}