* Started using Berkeley DB environments. This is necessary for
transaction support (but we don't actually use transactions yet).
This commit is contained in:
parent
758bd4673a
commit
4a013962bd
12 changed files with 256 additions and 107 deletions
71
src/db.hh
71
src/db.hh
|
|
@ -4,28 +4,73 @@
|
|||
#include <string>
|
||||
#include <list>
|
||||
|
||||
#include <db_cxx.h>
|
||||
|
||||
#include "util.hh"
|
||||
|
||||
using namespace std;
|
||||
|
||||
void createDB(const string & filename, const string & dbname);
|
||||
|
||||
bool queryDB(const string & filename, const string & dbname,
|
||||
const string & key, string & data);
|
||||
class Database;
|
||||
|
||||
bool queryListDB(const string & filename, const string & dbname,
|
||||
const string & key, Strings & data);
|
||||
|
||||
void setDB(const string & filename, const string & dbname,
|
||||
const string & key, const string & data);
|
||||
class Transaction
|
||||
{
|
||||
friend class Database;
|
||||
|
||||
void setListDB(const string & filename, const string & dbname,
|
||||
const string & key, const Strings & data);
|
||||
private:
|
||||
DbTxn * txn;
|
||||
|
||||
public:
|
||||
Transaction();
|
||||
Transaction(Database & _db);
|
||||
~Transaction();
|
||||
|
||||
void delDB(const string & filename, const string & dbname,
|
||||
const string & key);
|
||||
void commit();
|
||||
};
|
||||
|
||||
|
||||
#define noTxn Transaction()
|
||||
|
||||
|
||||
class Database
|
||||
{
|
||||
friend class Transaction;
|
||||
|
||||
private:
|
||||
DbEnv * env;
|
||||
|
||||
void requireEnv();
|
||||
|
||||
Db * openDB(const Transaction & txn,
|
||||
const string & table, bool create);
|
||||
|
||||
public:
|
||||
Database();
|
||||
~Database();
|
||||
|
||||
void open(const string & path);
|
||||
|
||||
void createTable(const string & table);
|
||||
|
||||
bool queryString(const Transaction & txn, const string & table,
|
||||
const string & key, string & data);
|
||||
|
||||
bool queryStrings(const Transaction & txn, const string & table,
|
||||
const string & key, Strings & data);
|
||||
|
||||
void setString(const Transaction & txn, const string & table,
|
||||
const string & key, const string & data);
|
||||
|
||||
void setStrings(const Transaction & txn, const string & table,
|
||||
const string & key, const Strings & data);
|
||||
|
||||
void delPair(const Transaction & txn, const string & table,
|
||||
const string & key);
|
||||
|
||||
void enumTable(const Transaction & txn, const string & table,
|
||||
Strings & keys);
|
||||
};
|
||||
|
||||
void enumDB(const string & filename, const string & dbname,
|
||||
Strings & keys);
|
||||
|
||||
#endif /* !__DB_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue