Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::lmdblib::LMDBEnvironment Class Reference

#include <lmdb_environment.hpp>

Classes

struct  ResourceGuard
 

Public Types

using Ptr = std::unique_ptr< LMDBEnvironment >
 
using SharedPtr = std::shared_ptr< LMDBEnvironment >
 

Public Member Functions

 LMDBEnvironment (const std::string &directory, uint64_t mapSizeKb, uint32_t maxNumDBs, uint32_t maxNumReaders, bool ephemeral=false)
 Opens/creates the LMDB environment.
 
 LMDBEnvironment (const LMDBEnvironment &other)=delete
 
 LMDBEnvironment (LMDBEnvironment &&other)=delete
 
LMDBEnvironmentoperator= (const LMDBEnvironment &other)=delete
 
LMDBEnvironmentoperator= (LMDBEnvironment &&other)=delete
 
 ~LMDBEnvironment ()
 
MDB_env * underlying () const
 
void wait_for_reader ()
 
void release_reader ()
 
void wait_for_writer ()
 
void release_writer ()
 
uint64_t getNextId ()
 
uint64_t get_map_size () const
 
uint64_t get_data_file_size () const
 

Private Attributes

std::atomic_uint64_t _id
 
std::string _directory
 
MDB_env * _mdbEnv
 
ResourceGuard _readGuard
 
ResourceGuard _writeGuard
 

Detailed Description

Definition at line 18 of file lmdb_environment.hpp.

Member Typedef Documentation

◆ Ptr

Definition at line 20 of file lmdb_environment.hpp.

◆ SharedPtr

Definition at line 21 of file lmdb_environment.hpp.

Constructor & Destructor Documentation

◆ LMDBEnvironment() [1/3]

bb::lmdblib::LMDBEnvironment::LMDBEnvironment ( const std::string &  directory,
uint64_t  mapSizeKb,
uint32_t  maxNumDBs,
uint32_t  maxNumReaders,
bool  ephemeral = false 
)

Opens/creates the LMDB environment.

Parameters
directoryThe directory in which the environment is to be created
mapSizeKbThe maximum size of the database, can be increased from a previously used value
maxNumDbsThe maximum number of databases that can be created withn this environment
maxNumReadersThe maximum number of concurrent read transactions permitted.
ephemeralWhen true, opens the env with MDB_NOSYNC | MDB_NOMETASYNC. Commits return as soon as the dirty pages are queued; the kernel flushes them lazily and never blocks the commit. Files stay sparse (we deliberately avoid MDB_WRITEMAP, which would eagerly allocate the full map size on disk). Intended for short-lived ephemeral world states (e.g. TXE test sessions) that discard the directory on close; never use for a real node — a crash mid-write yields an unrecoverable env.

Definition at line 11 of file lmdb_environment.cpp.

◆ LMDBEnvironment() [2/3]

bb::lmdblib::LMDBEnvironment::LMDBEnvironment ( const LMDBEnvironment other)
delete

◆ LMDBEnvironment() [3/3]

bb::lmdblib::LMDBEnvironment::LMDBEnvironment ( LMDBEnvironment &&  other)
delete

◆ ~LMDBEnvironment()

bb::lmdblib::LMDBEnvironment::~LMDBEnvironment ( )

Definition at line 61 of file lmdb_environment.cpp.

Member Function Documentation

◆ get_data_file_size()

uint64_t bb::lmdblib::LMDBEnvironment::get_data_file_size ( ) const

Definition at line 78 of file lmdb_environment.cpp.

◆ get_map_size()

uint64_t bb::lmdblib::LMDBEnvironment::get_map_size ( ) const

Definition at line 71 of file lmdb_environment.cpp.

◆ getNextId()

uint64_t bb::lmdblib::LMDBEnvironment::getNextId ( )
inline

Definition at line 58 of file lmdb_environment.hpp.

◆ operator=() [1/2]

LMDBEnvironment & bb::lmdblib::LMDBEnvironment::operator= ( const LMDBEnvironment other)
delete

◆ operator=() [2/2]

LMDBEnvironment & bb::lmdblib::LMDBEnvironment::operator= ( LMDBEnvironment &&  other)
delete

◆ release_reader()

void bb::lmdblib::LMDBEnvironment::release_reader ( )

Definition at line 46 of file lmdb_environment.cpp.

◆ release_writer()

void bb::lmdblib::LMDBEnvironment::release_writer ( )

Definition at line 56 of file lmdb_environment.cpp.

◆ underlying()

MDB_env * bb::lmdblib::LMDBEnvironment::underlying ( ) const

Definition at line 66 of file lmdb_environment.cpp.

◆ wait_for_reader()

void bb::lmdblib::LMDBEnvironment::wait_for_reader ( )

Definition at line 41 of file lmdb_environment.cpp.

◆ wait_for_writer()

void bb::lmdblib::LMDBEnvironment::wait_for_writer ( )

Definition at line 51 of file lmdb_environment.cpp.

Member Data Documentation

◆ _directory

std::string bb::lmdblib::LMDBEnvironment::_directory
private

Definition at line 66 of file lmdb_environment.hpp.

◆ _id

std::atomic_uint64_t bb::lmdblib::LMDBEnvironment::_id
private

Definition at line 65 of file lmdb_environment.hpp.

◆ _mdbEnv

MDB_env* bb::lmdblib::LMDBEnvironment::_mdbEnv
private

Definition at line 67 of file lmdb_environment.hpp.

◆ _readGuard

ResourceGuard bb::lmdblib::LMDBEnvironment::_readGuard
private

Definition at line 96 of file lmdb_environment.hpp.

◆ _writeGuard

ResourceGuard bb::lmdblib::LMDBEnvironment::_writeGuard
private

Definition at line 97 of file lmdb_environment.hpp.


The documentation for this class was generated from the following files: