diff options
Diffstat (limited to 'src/libstore/db.cc')
-rw-r--r-- | src/libstore/db.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/libstore/db.cc b/src/libstore/db.cc index 4a815a5f90a8..82211bd1dee8 100644 --- a/src/libstore/db.cc +++ b/src/libstore/db.cc @@ -33,11 +33,9 @@ Transaction::Transaction() Transaction::Transaction(Database & db) + : txn(0) { - db.requireEnv(); - try { - db.env->txn_begin(0, &txn, 0); - } catch (DbException e) { rethrow(e); } + begin(db); } @@ -47,6 +45,16 @@ Transaction::~Transaction() } +void Transaction::begin(Database & db) +{ + assert(txn == 0); + db.requireEnv(); + try { + db.env->txn_begin(0, &txn, 0); + } catch (DbException e) { rethrow(e); } +} + + void Transaction::commit() { if (!txn) throw Error("commit called on null transaction"); |