Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
lmdb_database.cpp
Go to the documentation of this file.
7#include "lmdb.h"
8#include <utility>
9
10namespace bb::lmdblib {
12 const LMDBDatabaseCreationTransaction& transaction,
13 const std::string& name,
14 bool integerKeys,
15 bool reverseKeys,
16 bool duplicateKeysPermitted,
17 MDB_cmp_func* cmp)
18 : dbName(name)
19 , duplicateKeysPermitted(duplicateKeysPermitted)
20 , environment(std::move(env))
21{
22 unsigned int flags = MDB_CREATE;
23 if (integerKeys) {
24 flags |= MDB_INTEGERKEY;
25 }
26 if (reverseKeys) {
27 flags |= MDB_REVERSEKEY;
28 }
30 flags |= MDB_DUPSORT;
31 }
32 call_lmdb_func("mdb_dbi_open", mdb_dbi_open, transaction.underlying(), name.c_str(), flags, &_dbi);
33 if (cmp != nullptr) {
34 call_lmdb_func("mdb_set_compare", mdb_set_compare, transaction.underlying(), _dbi, cmp);
35 }
36}
37
39{
40 call_lmdb_func(mdb_dbi_close, environment->underlying(), _dbi);
41}
42
43const MDB_dbi& LMDBDatabase::underlying() const
44{
45 return _dbi;
46}
47
48const std::string& LMDBDatabase::name() const
49{
50 return dbName;
51}
52
57
59{
60 MDB_stat stat;
61 call_lmdb_func(mdb_stat, tx.underlying(), underlying(), &stat);
62 return DBStats(name(), stat);
63}
64
65} // namespace bb::lmdblib
LMDBEnvironment::SharedPtr environment
const MDB_dbi & underlying() const
DBStats get_stats(LMDBReadTransaction &tx)
LMDBDatabase(LMDBEnvironment::SharedPtr env, const LMDBDatabaseCreationTransaction &transaction, const std::string &name, bool integerKeys=false, bool reverseKeys=false, bool duplicateKeysPermitted=false, MDB_cmp_func *cmp=nullptr)
bool duplicate_keys_permitted() const
const std::string & name() const
std::shared_ptr< LMDBEnvironment > SharedPtr
bool call_lmdb_func(int(*f)(TArgs...), TArgs... args)
STL namespace.