⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 environment.java

📁 关于Berkelay数据库的共享源码
💻 JAVA
字号:
/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 *	Oracle Corporation.  All rights reserved. * * $Id: Environment.java,v 12.16 2006/09/08 20:32:14 bostic Exp $ */package com.sleepycat.db;import com.sleepycat.db.internal.DbConstants;import com.sleepycat.db.internal.DbEnv;public class Environment {    private DbEnv dbenv;    private int autoCommitFlag;    /* package */    Environment(final DbEnv dbenv)        throws DatabaseException {        this.dbenv = dbenv;        dbenv.wrapper = this;    }    public Environment(final java.io.File home, EnvironmentConfig config)        throws DatabaseException, java.io.FileNotFoundException {        this(EnvironmentConfig.checkNull(config).openEnvironment(home));        this.autoCommitFlag =            ((dbenv.get_open_flags() & DbConstants.DB_INIT_TXN) == 0) ? 0 :                DbConstants.DB_AUTO_COMMIT;    }    public void close()        throws DatabaseException {        dbenv.close(0);    }    /* package */    DbEnv unwrap() {        return dbenv;    }    public static void remove(final java.io.File home,                              final boolean force,                              EnvironmentConfig config)        throws DatabaseException, java.io.FileNotFoundException {        config = EnvironmentConfig.checkNull(config);        int flags = force ? DbConstants.DB_FORCE : 0;        flags |= config.getUseEnvironment() ?            DbConstants.DB_USE_ENVIRON : 0;        flags |= config.getUseEnvironmentRoot() ?            DbConstants.DB_USE_ENVIRON_ROOT : 0;        final DbEnv dbenv = config.createEnvironment();        dbenv.remove((home == null) ? null : home.toString(), flags);    }    public void setConfig(final EnvironmentConfig config)        throws DatabaseException {        config.configureEnvironment(dbenv, new EnvironmentConfig(dbenv));    }    public EnvironmentConfig getConfig()        throws DatabaseException {        return new EnvironmentConfig(dbenv);    }    /* Manage databases. */    public Database openDatabase(final Transaction txn,                                 final String fileName,                                 final String databaseName,                                 DatabaseConfig config)        throws DatabaseException, java.io.FileNotFoundException {        return new Database(            DatabaseConfig.checkNull(config).openDatabase(dbenv,                (txn == null) ? null : txn.txn,                fileName, databaseName));    }    public SecondaryDatabase openSecondaryDatabase(            final Transaction txn,            final String fileName,            final String databaseName,            final Database primaryDatabase,            SecondaryConfig config)        throws DatabaseException, java.io.FileNotFoundException {        return new SecondaryDatabase(            SecondaryConfig.checkNull(config).openSecondaryDatabase(                dbenv, (txn == null) ? null : txn.txn,                fileName, databaseName, primaryDatabase.db),            primaryDatabase);    }    public void removeDatabase(final Transaction txn,                               final String fileName,                               final String databaseName)        throws DatabaseException, java.io.FileNotFoundException {        dbenv.dbremove((txn == null) ? null : txn.txn,            fileName, databaseName,            (txn == null) ? autoCommitFlag : 0);    }    public void renameDatabase(final Transaction txn,                               final String fileName,                               final String databaseName,                               final String newName)        throws DatabaseException, java.io.FileNotFoundException {        dbenv.dbrename((txn == null) ? null : txn.txn,            fileName, databaseName, newName,            (txn == null) ? autoCommitFlag : 0);    }    public java.io.File getHome()        throws DatabaseException {        String home = dbenv.get_home();        return (home == null) ? null : new java.io.File(home);    }    /* Cache management. */    public int trickleCacheWrite(int percent)        throws DatabaseException {        return dbenv.memp_trickle(percent);    }    /* Locking */    public int detectDeadlocks(LockDetectMode mode)        throws DatabaseException {        return dbenv.lock_detect(0, mode.getFlag());    }    public Lock getLock(int locker,                        boolean noWait,                        DatabaseEntry object,                        LockRequestMode mode)        throws DatabaseException {        return Lock.wrap(            dbenv.lock_get(locker, noWait ? DbConstants.DB_LOCK_NOWAIT : 0,                object, mode.getFlag()));    }    public void putLock(Lock lock)        throws DatabaseException {        dbenv.lock_put(lock.unwrap());    }    public int createLockerID()        throws DatabaseException {        return dbenv.lock_id();    }    public void freeLockerID(int id)        throws DatabaseException {        dbenv.lock_id_free(id);    }    public void lockVector(int locker, boolean noWait, LockRequest[] list)        throws DatabaseException {        dbenv.lock_vec(locker, noWait ? DbConstants.DB_LOCK_NOWAIT : 0,            list, 0, list.length);    }    /* Logging */    public LogCursor openLogCursor()        throws DatabaseException {        return LogCursor.wrap(dbenv.log_cursor(0));    }    public String getLogFileName(LogSequenceNumber lsn)        throws DatabaseException {        return dbenv.log_file(lsn);    }    /* Replication support */    public void startReplication(DatabaseEntry cdata, boolean master)        throws DatabaseException {        dbenv.rep_start(cdata,            master ? DbConstants.DB_REP_MASTER : DbConstants.DB_REP_CLIENT);    }    public int electReplicationMaster(int nsites, int nvotes)        throws DatabaseException {        return dbenv.rep_elect(nsites, nvotes, 0 /* unused flags */);    }    public void flushReplication()        throws DatabaseException {        dbenv.rep_flush();    }    public ReplicationStatus processReplicationMessage(DatabaseEntry control,                                                       DatabaseEntry rec,                                                       int envid)        throws DatabaseException {        final DbEnv.RepProcessMessage wrappedID = new DbEnv.RepProcessMessage();        wrappedID.envid = envid;        // Create a new entry so that rec isn't overwritten        final DatabaseEntry cdata =            new DatabaseEntry(rec.getData(), rec.getOffset(), rec.getSize());        final LogSequenceNumber lsn = new LogSequenceNumber();        final int ret =            dbenv.rep_process_message(control, cdata, wrappedID, lsn);        return ReplicationStatus.getStatus(ret, cdata, wrappedID.envid, lsn);    }    public void setReplicationConfig(ReplicationConfig config, boolean onoff)        throws DatabaseException {        dbenv.rep_set_config(config.getFlag(), onoff);    }    public boolean getReplicationConfig(ReplicationConfig config)        throws DatabaseException {        return dbenv.rep_get_config(config.getFlag());    }    public void setReplicationTimeout(        final ReplicationTimeoutType type, final int replicationTimeout)        throws DatabaseException {        dbenv.rep_set_timeout(type.getId(), replicationTimeout);    }    public int getReplicationTimeout(final ReplicationTimeoutType type)        throws DatabaseException {        return dbenv.rep_get_timeout(type.getId());    }    public void syncReplication() throws DatabaseException {        dbenv.rep_sync(0);    }    /* Replication Manager interface */    public void replicationManagerStart(        int nthreads, ReplicationManagerStartPolicy disp)        throws DatabaseException {        dbenv.repmgr_start(nthreads, disp.getId());    }    /* Statistics */    public CacheStats getCacheStats(StatsConfig config)        throws DatabaseException {        return dbenv.memp_stat(StatsConfig.checkNull(config).getFlags());    }    public CacheFileStats[] getCacheFileStats(StatsConfig config)        throws DatabaseException {        return dbenv.memp_fstat(StatsConfig.checkNull(config).getFlags());    }    public LogStats getLogStats(StatsConfig config)        throws DatabaseException {        return dbenv.log_stat(StatsConfig.checkNull(config).getFlags());    }	public ReplicationHostAddress[] getReplicationSiteList()	    throws DatabaseException {		return dbenv.repmgr_site_list();	}    public ReplicationStats getReplicationStats(StatsConfig config)        throws DatabaseException {        return dbenv.rep_stat(StatsConfig.checkNull(config).getFlags());    }    public LockStats getLockStats(StatsConfig config)        throws DatabaseException {        return dbenv.lock_stat(StatsConfig.checkNull(config).getFlags());    }    public MutexStats getMutexStats(StatsConfig config)        throws DatabaseException {        return dbenv.mutex_stat(StatsConfig.checkNull(config).getFlags());    }    public TransactionStats getTransactionStats(StatsConfig config)        throws DatabaseException {        return dbenv.txn_stat(StatsConfig.checkNull(config).getFlags());    }    /* Transaction management */    public Transaction beginCDSGroup() throws DatabaseException {        return new Transaction(dbenv.cdsgroup_begin());    }    public Transaction beginTransaction(final Transaction parent,                                        TransactionConfig config)        throws DatabaseException {        return new Transaction(            TransactionConfig.checkNull(config).beginTransaction(dbenv,                (parent == null) ? null : parent.txn));    }    public void checkpoint(CheckpointConfig config)        throws DatabaseException {        CheckpointConfig.checkNull(config).runCheckpoint(dbenv);    }    public void logFlush(LogSequenceNumber lsn)        throws DatabaseException {        dbenv.log_flush(lsn);    }    public LogSequenceNumber logPut(DatabaseEntry data, boolean flush)        throws DatabaseException {        final LogSequenceNumber lsn = new LogSequenceNumber();        dbenv.log_put(lsn, data, flush ? DbConstants.DB_FLUSH : 0);        return lsn;    }    public void logPrint(Transaction txn, String message)        throws DatabaseException {        dbenv.log_print((txn == null) ? null : txn.txn, message);    }    public java.io.File[] getArchiveLogFiles(boolean includeInUse)        throws DatabaseException {        final String[] logNames = dbenv.log_archive(DbConstants.DB_ARCH_ABS |                (includeInUse ? DbConstants.DB_ARCH_LOG : 0));        final int len = (logNames == null) ? 0 : logNames.length;        final java.io.File[] logFiles = new java.io.File[len];        for (int i = 0; i < len; i++)            logFiles[i] = new java.io.File(logNames[i]);        return logFiles;    }    public java.io.File[] getArchiveDatabases()        throws DatabaseException {        final String home = dbenv.get_home();        final String[] dbNames = dbenv.log_archive(DbConstants.DB_ARCH_DATA);        final int len = (dbNames == null) ? 0 : dbNames.length;        final java.io.File[] dbFiles = new java.io.File[len];        for (int i = 0; i < len; i++)            dbFiles[i] = new java.io.File(home, dbNames[i]);        return dbFiles;    }    public void removeOldLogFiles()        throws DatabaseException {        dbenv.log_archive(DbConstants.DB_ARCH_REMOVE);    }    public PreparedTransaction[] recover(final int count,                                         final boolean continued)        throws DatabaseException {        return dbenv.txn_recover(count,            continued ? DbConstants.DB_NEXT : DbConstants.DB_FIRST);    }    public void resetFileID(final String filename, boolean encrypted)        throws DatabaseException {        dbenv.fileid_reset(filename, encrypted ? DbConstants.DB_ENCRYPT : 0);    }    public void resetLogSequenceNumber(final String filename, boolean encrypted)        throws DatabaseException {        dbenv.lsn_reset(filename, encrypted ? DbConstants.DB_ENCRYPT : 0);    }    /* Panic the environment, or stop a panic. */    public void panic(boolean onoff)        throws DatabaseException {        dbenv.set_flags(DbConstants.DB_PANIC_ENVIRONMENT, onoff);    }    /* Version information */    public static String getVersionString() {        return DbEnv.get_version_string();    }    public static int getVersionMajor() {        return DbEnv.get_version_major();    }    public static int getVersionMinor() {        return DbEnv.get_version_minor();    }    public static int getVersionPatch() {        return DbEnv.get_version_patch();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -