From 4a013962bdd08ee0cf285136e4eca0f2c9c76b98 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 31 Jul 2003 13:47:13 +0000 Subject: * Started using Berkeley DB environments. This is necessary for transaction support (but we don't actually use transactions yet). --- src/db.hh | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 58 insertions(+), 13 deletions(-) (limited to 'src/db.hh') diff --git a/src/db.hh b/src/db.hh index 6f13eb30c813..57b6e4d8ebfb 100644 --- a/src/db.hh +++ b/src/db.hh @@ -4,28 +4,73 @@ #include #include +#include + #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; + + +class Transaction +{ + friend class Database; + +private: + DbTxn * txn; + +public: + Transaction(); + Transaction(Database & _db); + ~Transaction(); + + 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); -bool queryListDB(const string & filename, const string & dbname, - const string & key, Strings & data); + void setString(const Transaction & txn, const string & table, + const string & key, const string & data); -void setDB(const string & filename, const string & dbname, - const string & key, const string & data); + void setStrings(const Transaction & txn, const string & table, + const string & key, const Strings & data); -void setListDB(const string & filename, const string & dbname, - const string & key, const Strings & data); + void delPair(const Transaction & txn, const string & table, + const string & key); -void delDB(const string & filename, const string & dbname, - 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 */ -- cgit 1.4.1