about summary refs log tree commit diff
path: root/src/db.hh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2003-07-31T13·47+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2003-07-31T13·47+0000
commit4a013962bdd08ee0cf285136e4eca0f2c9c76b98 (patch)
treec354204a50cc2c0a5e8873e2e5dab98316f42a5d /src/db.hh
parent758bd4673a3553fcbd78c8f895d6efe839d3d538 (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.hh71
1 files changed, 58 insertions, 13 deletions
diff --git a/src/db.hh b/src/db.hh
index 6f13eb30c8..57b6e4d8eb 100644
--- a/src/db.hh
+++ b/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;
+
+
+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 */