// ********************************************************************** // // Copyright (c) 2003-2013 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. // // ********************************************************************** package Freeze; public class Util { /** * Returns a new background save evictor. The Berkeley DB database with the * name given in filename is opened if it already exists. * If the database does not exist yet and createDb * is true, the database is created automatically; otherwise, * DatabaseException is raised. * * @param adapter The object adapter to associate with this evictor. * @param envName The name of the Berkeley DB database environment. The * environment must already exist. * @param filename The name of the Berkeley DB database file. * @param initializer An object that is used to initialize a servant after its * state is restored from the database, or null if no initializer * is necessary. * @param indices An array of Freeze indices, or nullfilename is opened if it already exists. * If the database does not exist yet and createDb * is true, the database is created automatically; otherwise, * DatabaseException is raised. * * @param adapter The object adapter to associate with this evictor. * @param envName The name of the Berkeley DB database environment. The * environment must already exist. * @param dbEnv The database environment in which to open the database. * @param filename The name of the Berkeley DB database file. * @param initializer An object that is used to initialize a servant after its * state is restored from the database, or null if no initializer * is necessary. * @param indices An array of Freeze indices, or nullfilename is opened if it already exists. * If the database does not exist yet and createDb * is true, the database is created automatically; otherwise, * DatabaseException is raised. * * @param adapter The object adapter to associate with this evictor. * @param envName The name of the Berkeley DB database environment. The * environment must already exist. * @param filename The name of the Berkeley DB database file. * @param facetTypes A map of facet name to Slice type id, or nullnull if no initializer * is necessary. * @param indices An array of Freeze indices, or null facetTypes, ServantInitializer initializer, Index[] indices, boolean createDb) { return new TransactionalEvictorI(adapter, envName, filename, facetTypes, initializer, indices, createDb); } /** * Returns a new transactional evictor. The Berkeley DB database with the * name given in filename is opened if it already exists. * If the database does not exist yet and createDb * is true, the database is created automatically; otherwise, * DatabaseException is raised. * * @param adapter The object adapter to associate with this evictor. * @param envName The name of the Berkeley DB database environment. The * environment must already exist. * @param dbEnv The database environment in which to open the database. * @param filename The name of the Berkeley DB database file. * @param facetTypes A map of facet name to Slice type id, or nullnull if no initializer * is necessary. * @param indices An array of Freeze indices, or null facetTypes, ServantInitializer initializer, Index[] indices, boolean createDb) { return new TransactionalEvictorI(adapter, envName, dbEnv, filename, facetTypes, initializer, indices, createDb); } /** * Creates a new Freeze connection using the given communicator and database * environment. * * @param communicator The communicator associated with this connection. * @param envName The name of the Berkeley DB database environment. * @return A new Freeze connection. * @throws Freeze.DatabaseException If an error occurs during database operations. */ public static Connection createConnection(Ice.Communicator communicator, String envName) { return new ConnectionI(communicator, envName, null); } /** * Creates a new Freeze connection using the given communicator and database * environment. * * @param communicator The communicator associated with this connection. * @param envName The name of the Berkeley DB database environment. * @param dbEnv The database environment associated with this connection. * @return A new Freeze connection. * @throws Freeze.DatabaseException If an error occurs during database operations. */ public static Connection createConnection(Ice.Communicator communicator, String envName, com.sleepycat.db.Environment dbEnv) { return new ConnectionI(communicator, envName, dbEnv); } /** * Returns the database file name of the Freeze catalog. * * @return The database file name. */ public static String catalogName() { return _catalogName; } /** * Returns the database file name of the Freeze catalog index list. * * @return The database file name. */ public static String catalogIndexListName() { return _catalogIndexListName; } /** * Returns the Berkeley DB transaction object associated with a Freeze transaction. * * @param tx The Freeze transaction. * @return The Berkeley DB transaction. */ public static com.sleepycat.db.Transaction getTxn(Transaction tx) { try { return ((TransactionI)tx).dbTxn(); } catch(ClassCastException e) { return null; } } /** * Registers a handler for fatal errors encountered by the background save evictor. * * @param cb The error callback. */ public static synchronized FatalErrorCallback registerFatalErrorCallback(FatalErrorCallback cb) { FatalErrorCallback result = _fatalErrorCallback; _fatalErrorCallback = cb; return result; } static synchronized void handleFatalError(BackgroundSaveEvictor evictor, Ice.Communicator communicator, RuntimeException ex) { if(_fatalErrorCallback != null) { _fatalErrorCallback.handleError(evictor, communicator, ex); } else { communicator.getLogger().error("*** Halting JVM ***"); Runtime.getRuntime().halt(1); } } private static String _catalogName = "__catalog"; private static String _catalogIndexListName = "__catalogIndexList"; private static FatalErrorCallback _fatalErrorCallback = null; }