lmdb-safe/basic-example.cc

42 lines
961 B
C++
Raw Normal View History

2018-12-08 14:08:26 +01:00
#include "lmdb-safe.hh"
void checkLMDB(MDBEnv* env, MDBDbi dbi)
{
auto rotxn = env->getROTransaction();
2018-12-10 14:51:02 +01:00
MDBOutVal data;
2018-12-08 14:08:26 +01: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();
mdb_drop(txn, dbi, 0);
2018-12-08 14:08:26 +01:00
txn.put(dbi, "lmdb", "great");
2018-12-10 14:51:02 +01:00
MDBOutVal data;
2018-12-08 14:08:26 +01: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();
txn.commit();
2018-12-08 14:08:26 +01:00
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
}