2018-12-08 14:08:26 +01:00
|
|
|
#include "lmdb-safe.hh"
|
2022-01-18 22:08:36 +01:00
|
|
|
|
2018-12-10 22:08:49 +01:00
|
|
|
using namespace std;
|
2022-01-18 22:08:36 +01:00
|
|
|
using namespace LMDBSafe;
|
2018-12-08 14:08:26 +01:00
|
|
|
|
|
|
|
void checkLMDB(MDBEnv* env, MDBDbi dbi)
|
|
|
|
{
|
|
|
|
auto rotxn = env->getROTransaction();
|
2018-12-10 14:51:02 +01:00
|
|
|
MDBOutVal data;
|
2019-10-26 11:42:38 +02:00
|
|
|
if(!rotxn->get(dbi, "lmdb", data)) {
|
2018-12-10 14:51:02 +01:00
|
|
|
cout<< "Outside RW transaction, found that lmdb = " << data.get<string_view>() <<endl;
|
2018-12-08 14:08:26 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
cout<<"Outside RW transaction, found nothing" << endl;
|
|
|
|
}
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
auto env = getMDBEnv("./database", 0, 0600);
|
|
|
|
auto dbi = env->openDB("example", MDB_CREATE);
|
|
|
|
|
|
|
|
auto txn = env->getRWTransaction();
|
2019-10-26 11:42:38 +02:00
|
|
|
mdb_drop(*txn, dbi, 0);
|
|
|
|
txn->put(dbi, "lmdb", "great");
|
2018-12-08 14:08:26 +01:00
|
|
|
|
2018-12-10 14:51:02 +01:00
|
|
|
MDBOutVal data;
|
2019-10-26 11:42:38 +02:00
|
|
|
if(!txn->get(dbi, "lmdb", data)) {
|
2018-12-10 14:51:02 +01:00
|
|
|
cout<< "Within RW transaction, found that lmdb = " << data.get<string_view>() <<endl;
|
2018-12-08 14:08:26 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
cout<<"Found nothing" << endl;
|
|
|
|
|
|
|
|
std::thread elsewhere(checkLMDB, env.get(), dbi);
|
|
|
|
elsewhere.join();
|
|
|
|
|
2019-10-26 11:42:38 +02:00
|
|
|
txn->commit();
|
2018-12-08 20:57:48 +01:00
|
|
|
|
2018-12-08 14:08:26 +01:00
|
|
|
cout<<"Committed data"<<endl;
|
|
|
|
|
|
|
|
checkLMDB(env.get(), dbi);
|
2018-12-08 20:57:48 +01:00
|
|
|
txn = env->getRWTransaction();
|
2019-10-26 11:42:38 +02:00
|
|
|
mdb_drop(*txn, dbi, 0);
|
|
|
|
txn->commit();
|
2018-12-08 14:08:26 +01:00
|
|
|
}
|