void CBDB_Env::Open(const string& db_home, int flags) { int ret = x_Open(db_home.c_str(), flags); BDB_CHECK(ret, "DB_ENV"); SetDirectDB(m_DirectDB); SetDirectLog(m_DirectLOG); }
const string & CSeqDBGiMask::GetDesc(int algo_id, CSeqDBLockHold & locked) { //m_Atlas.Lock(locked); x_Open(algo_id); return m_Desc; }
void CSeqDBGiMask::GetMaskData(int algo_id, TGi gi, CSeqDB::TSequenceRanges &ranges, CSeqDBLockHold &locked) { //m_Atlas.Lock(locked); x_Open(algo_id); int page, vol, off; if (s_BinarySearch(m_GiIndex, m_NumIndex, GI_TO(int, gi), page)) { vol = m_GiIndex[m_NumIndex + page * 2]; off = m_GiIndex[m_NumIndex + page * 2 + 1]; } else {
void CBDB_Env::OpenWithTrans(const string& db_home, TEnvOpenFlags opt) { int ret = m_Env->set_lk_detect(m_Env, DB_LOCK_DEFAULT); BDB_CHECK(ret, "DB_ENV"); if (m_MaxLockObjects) { this->SetMaxLockObjects(m_MaxLockObjects); } if (m_MaxLocks) { this->SetMaxLocks(m_MaxLocks); } if (m_MaxLockers) { this->SetMaxLockers(m_MaxLockers); } int flag = DB_INIT_TXN | DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL; // for windows we try to init environment in system memory // (not file based) // so it is reclaimed by OS automatically even if the application crashes # ifdef NCBI_OS_MSWIN flag |= DB_SYSTEM_MEM; # endif if (opt & eThreaded) { flag |= DB_THREAD; } if (opt & ePrivate) { flag |= DB_PRIVATE; } // Run recovery procedure, reinitialize the environment if (opt & eRunRecovery) { // use private environment as prescribed by "db_recover" utility int recover_flag = flag | DB_RECOVER | DB_CREATE; if (!(recover_flag & DB_SYSTEM_MEM)) { recover_flag |= DB_PRIVATE; } ret = x_Open(db_home.c_str(), recover_flag); BDB_CHECK(ret, "DB_ENV"); // non-private recovery if (!(recover_flag & DB_PRIVATE)) { m_Transactional = true; return; } // "Private" recovery requires reopening, to make // it available for other programs ret = m_Env->close(m_Env, 0); BDB_CHECK(ret, "DB_ENV"); ret = db_env_create(&m_Env, 0); BDB_CHECK(ret, "DB_ENV"); } else if (opt & eRunRecoveryFatal) { // use private environment as prescribed by "db_recover" utility int recover_flag = flag | DB_RECOVER_FATAL | DB_CREATE; if (!(recover_flag & DB_SYSTEM_MEM)) { recover_flag |= DB_PRIVATE; } ret = x_Open(db_home.c_str(), recover_flag); BDB_CHECK(ret, "DB_ENV"); // non-private recovery if (!(recover_flag & DB_PRIVATE)) { m_Transactional = true; return; } // "Private" recovery requires reopening, to make // it available for other programs ret = m_Env->close(m_Env, 0); BDB_CHECK(ret, "DB_ENV"); ret = db_env_create(&m_Env, 0); BDB_CHECK(ret, "DB_ENV"); } Open(db_home, flag); m_Transactional = true; }
void CBDB_Env::OpenPrivate(const string& db_home) { int ret = x_Open(db_home.c_str(), DB_CREATE|DB_THREAD|DB_PRIVATE|DB_INIT_MPOOL); BDB_CHECK(ret, "DB_ENV"); }