Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
lmdb_database.cpp
Go to the documentation of this file.
1
#include "
barretenberg/lmdblib/lmdb_database.hpp
"
2
#include "
barretenberg/lmdblib/lmdb_db_transaction.hpp
"
3
#include "
barretenberg/lmdblib/lmdb_environment.hpp
"
4
#include "
barretenberg/lmdblib/lmdb_helpers.hpp
"
5
#include "
barretenberg/lmdblib/lmdb_read_transaction.hpp
"
6
#include "
barretenberg/lmdblib/types.hpp
"
7
#include "lmdb.h"
8
#include <utility>
9
10
namespace
bb::lmdblib
{
11
LMDBDatabase::LMDBDatabase
(
LMDBEnvironment::SharedPtr
env,
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
}
29
if
(
duplicateKeysPermitted
) {
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
38
LMDBDatabase::~LMDBDatabase
()
39
{
40
call_lmdb_func
(mdb_dbi_close,
environment
->underlying(),
_dbi
);
41
}
42
43
const
MDB_dbi&
LMDBDatabase::underlying
()
const
44
{
45
return
_dbi
;
46
}
47
48
const
std::string&
LMDBDatabase::name
()
const
49
{
50
return
dbName
;
51
}
52
53
bool
LMDBDatabase::duplicate_keys_permitted
()
const
54
{
55
return
duplicateKeysPermitted
;
56
}
57
58
DBStats
LMDBDatabase::get_stats
(
LMDBReadTransaction
& tx)
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
bb::lmdblib::LMDBDatabaseCreationTransaction
Definition
lmdb_db_transaction.hpp:9
bb::lmdblib::LMDBDatabase::environment
LMDBEnvironment::SharedPtr environment
Definition
lmdb_database.hpp:42
bb::lmdblib::LMDBDatabase::underlying
const MDB_dbi & underlying() const
Definition
lmdb_database.cpp:43
bb::lmdblib::LMDBDatabase::~LMDBDatabase
~LMDBDatabase()
Definition
lmdb_database.cpp:38
bb::lmdblib::LMDBDatabase::get_stats
DBStats get_stats(LMDBReadTransaction &tx)
Definition
lmdb_database.cpp:58
bb::lmdblib::LMDBDatabase::duplicateKeysPermitted
bool duplicateKeysPermitted
Definition
lmdb_database.hpp:40
bb::lmdblib::LMDBDatabase::_dbi
MDB_dbi _dbi
Definition
lmdb_database.hpp:41
bb::lmdblib::LMDBDatabase::dbName
std::string dbName
Definition
lmdb_database.hpp:39
bb::lmdblib::LMDBDatabase::LMDBDatabase
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)
Definition
lmdb_database.cpp:11
bb::lmdblib::LMDBDatabase::duplicate_keys_permitted
bool duplicate_keys_permitted() const
Definition
lmdb_database.cpp:53
bb::lmdblib::LMDBDatabase::name
const std::string & name() const
Definition
lmdb_database.cpp:48
bb::lmdblib::LMDBEnvironment::SharedPtr
std::shared_ptr< LMDBEnvironment > SharedPtr
Definition
lmdb_environment.hpp:21
bb::lmdblib::LMDBReadTransaction
Definition
lmdb_read_transaction.hpp:22
bb::lmdblib::LMDBTransaction::underlying
MDB_txn * underlying() const
Definition
lmdb_transaction.cpp:20
lmdb_database.hpp
lmdb_db_transaction.hpp
lmdb_environment.hpp
lmdb_helpers.hpp
lmdb_read_transaction.hpp
types.hpp
bb::lmdblib
Definition
fixtures.hpp:5
bb::lmdblib::call_lmdb_func
bool call_lmdb_func(int(*f)(TArgs...), TArgs... args)
Definition
lmdb_helpers.hpp:38
std
STL namespace.
bb::lmdblib::DBStats
Definition
types.hpp:22
src
barretenberg
lmdblib
lmdb_database.cpp
Generated by
1.9.8