DataEnvironment.java [plain text]
package com.sleepycat.bdb;
import com.sleepycat.db.Db;
import com.sleepycat.db.DbEnv;
import com.sleepycat.db.DbException;
import com.sleepycat.db.DbTxn;
import com.sleepycat.bdb.util.RuntimeExceptionWrapper;
import java.io.FileNotFoundException;
import java.util.WeakHashMap;
class DataEnvironment extends CurrentTransaction {
private static WeakHashMap envMap = new WeakHashMap();
private int writeLockFlag;
private boolean cdbMode;
private boolean txnMode;
private ThreadLocal currentTrans = new ThreadLocal();
public static DataEnvironment getEnvironment(DbEnv env) {
synchronized (envMap) {
DataEnvironment myEnv =
(DataEnvironment) envMap.get(env);
if (myEnv == null) {
myEnv = new DataEnvironment(env);
envMap.put(env, myEnv);
}
return myEnv;
}
}
private DataEnvironment(DbEnv dbEnv) {
super(dbEnv);
try {
this.txnMode = (dbEnv.getOpenFlags() & Db.DB_INIT_TXN) != 0;
if (this.txnMode || ((dbEnv.getOpenFlags() & Db.DB_INIT_LOCK) != 0))
this.writeLockFlag = Db.DB_RMW;
this.cdbMode = (dbEnv.getOpenFlags() & Db.DB_INIT_CDB) != 0;
} catch (DbException e) {
throw new RuntimeExceptionWrapper(e);
}
}
public final boolean isTxnMode() {
return txnMode;
}
public final boolean isCdbMode() {
return cdbMode;
}
public final int getWriteLockFlag() {
return writeLockFlag;
}
}