33 #include <type_traits> 70 MDB_env* handle()
const noexcept {
return env.get(); }
113 typename std::result_of<F(MDB_txn&)>::type
try_write(
F f,
unsigned attempts = 3)
115 for (
unsigned i = 0; i < attempts; ++i)
122 const auto wrote = f(*(*txn));
void operator()(MDB_env *ptr) const noexcept
virtual ~database() noexcept
expect< read_txn > create_read_txn(suspended_txn txn=nullptr) noexcept
Lightning memory-mapped database library.
std::unique_ptr< MDB_txn, abort_txn > suspended_txn
std::unique_ptr< MDB_txn, abort_write_txn > write_txn
struct MDB_env MDB_env
Opaque structure for a database environment.
expect< environment > open_environment(const char *path, MDB_dbi max_dbs) noexcept
std::unique_ptr< MDB_env, close_env > environment
database(environment env)
std::error_code error() const noexcept
std::unique_ptr< MDB_txn, release_read_txn > read_txn
expect< void > resize() noexcept
std::atomic< std::size_t > active
expect< write_txn > create_write_txn() noexcept
#define ELECTRONEUM_CHECK(...)
Check expect<void> and return errors in current scope.
expect< void > commit(write_txn txn) noexcept
Commit the read-write transaction.
unsigned int MDB_dbi
A handle for an individual database in the DB environment.
database & operator=(database &&)=delete
Closes LMDB environment handle.
const T & move(const T &t)
std::result_of< F(MDB_txn &)>::type try_write(F f, unsigned attempts=3)
#define ELECTRONEUM_PRECOND(...)
If precondition fails, return ::error::kInvalidArgument in current scope.
expect< suspended_txn > reset_txn(read_txn txn) noexcept
Manages a LMDB environment for safe memory-map resizing. Thread-safe.
error
Tracks LMDB error codes.
void mdb_env_close(MDB_env *env)
Close the environment and release the memory map.