lmdb-safe/examples/basic.cc

45 lines
1.1 KiB
C++
Raw Normal View History

#include "../lmdb-safe.hh"
2022-01-18 22:08:36 +01:00
2022-02-01 19:54:17 +01:00
#include <iostream>
using namespace std;
2022-01-18 22:08:36 +01:00
using namespace LMDBSafe;
2018-12-08 14:08:26 +01:00
2022-01-30 21:32:08 +01:00
void checkLMDB(MDBEnv *env, MDBDbi dbi)
2018-12-08 14:08:26 +01:00
{
2022-01-30 21:32:08 +01:00
auto rotxn = env->getROTransaction();
MDBOutVal data;
if (!rotxn->get(dbi, "lmdb", data)) {
cout << "Outside RW transaction, found that lmdb = " << data.get<string_view>() << endl;
} else
cout << "Outside RW transaction, found nothing" << endl;
2018-12-08 14:08:26 +01:00
}
int main()
{
auto env = getMDBEnv("./basic.lmdb", MDB_NOSUBDIR, 0600);
2022-01-30 21:32:08 +01:00
auto dbi = env->openDB("example", MDB_CREATE);
auto txn = env->getRWTransaction();
mdb_drop(*txn, dbi, 0);
txn->put(dbi, "lmdb", "great");
MDBOutVal data;
if (!txn->get(dbi, "lmdb", data)) {
cout << "Within RW transaction, found that lmdb = " << data.get<string_view>() << endl;
} else
cout << "Found nothing" << endl;
std::thread elsewhere(checkLMDB, env.get(), dbi);
elsewhere.join();
txn->commit();
cout << "Committed data" << endl;
checkLMDB(env.get(), dbi);
txn = env->getRWTransaction();
mdb_drop(*txn, dbi, 0);
txn->commit();
2018-12-08 14:08:26 +01:00
}