MCPcopy Create free account
hub / github.com/ElementsProject/elements / MakeBerkeleyDatabase

Function MakeBerkeleyDatabase

src/wallet/bdb.cpp:827–850  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

825}
826
827std::unique_ptr<BerkeleyDatabase> MakeBerkeleyDatabase(const fs::path& path, const DatabaseOptions& options, DatabaseStatus& status, bilingual_str& error)
828{
829 fs::path data_file = BDBDataFile(path);
830 std::unique_ptr<BerkeleyDatabase> db;
831 {
832 LOCK(cs_db); // Lock env.m_databases until insert in BerkeleyDatabase constructor
833 std::string data_filename = fs::PathToString(data_file.filename());
834 std::shared_ptr<BerkeleyEnvironment> env = GetBerkeleyEnv(data_file.parent_path());
835 if (env->m_databases.count(data_filename)) {
836 error = Untranslated(strprintf("Refusing to load database. Data file '%s' is already loaded.", fs::PathToString(env->Directory() / data_filename)));
837 status = DatabaseStatus::FAILED_ALREADY_LOADED;
838 return nullptr;
839 }
840 db = std::make_unique<BerkeleyDatabase>(std::move(env), std::move(data_filename));
841 }
842
843 if (options.verify && !db->Verify(error)) {
844 status = DatabaseStatus::FAILED_VERIFY;
845 return nullptr;
846 }
847
848 status = DatabaseStatus::SUCCESS;
849 return db;
850}
851} // namespace wallet

Callers 1

MakeDatabaseFunction · 0.85

Calls 8

BDBDataFileFunction · 0.85
PathToStringFunction · 0.85
GetBerkeleyEnvFunction · 0.85
UntranslatedFunction · 0.85
filenameMethod · 0.80
countMethod · 0.80
DirectoryMethod · 0.80
VerifyMethod · 0.45

Tested by

no test coverage detected