diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-07-31 13:47:13 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-07-31 13:47:13 +0000 |
commit | 4a013962bdd08ee0cf285136e4eca0f2c9c76b98 (patch) | |
tree | c354204a50cc2c0a5e8873e2e5dab98316f42a5d /src/db.hh | |
parent | 758bd4673a3553fcbd78c8f895d6efe839d3d538 (diff) |
* Started using Berkeley DB environments. This is necessary for
transaction support (but we don't actually use transactions yet).
Diffstat (limited to 'src/db.hh')
-rw-r--r-- | src/db.hh | 71 |
1 files changed, 58 insertions, 13 deletions
@@ -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; + + +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 */ |