diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2010-10-30 10:22:17 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2010-10-30 10:59:07 +0200 |
commit | e4713d0203311fdfcfef72ae5632782075159a56 (patch) | |
tree | ca2ce2177b608a87b50c80837c607fa513e00ea3 /src/dal/dataprovider.cpp | |
parent | a84572c5449c74d9107a9c725a5feb32e439843e (diff) | |
download | manaserv-e4713d0203311fdfcfef72ae5632782075159a56.tar.gz manaserv-e4713d0203311fdfcfef72ae5632782075159a56.tar.bz2 manaserv-e4713d0203311fdfcfef72ae5632782075159a56.tar.xz manaserv-e4713d0203311fdfcfef72ae5632782075159a56.zip |
Introduced a helper class for performing transactions
Avoids having to remember to call rollbackTransaction and makes
transactions exception-safe (since the destructor of PerformTransaction
will be called when an exception is thrown).
Diffstat (limited to 'src/dal/dataprovider.cpp')
-rw-r--r-- | src/dal/dataprovider.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/dal/dataprovider.cpp b/src/dal/dataprovider.cpp index 370741cd..f6bcbdf9 100644 --- a/src/dal/dataprovider.cpp +++ b/src/dal/dataprovider.cpp @@ -25,6 +25,26 @@ namespace dal { +PerformTransaction::PerformTransaction(DataProvider *dataProvider) + : mDataProvider(dataProvider) + , mCommitted(false) +{ + mDataProvider->beginTransaction(); +} + +PerformTransaction::~PerformTransaction() +{ + if (!mCommitted) + mDataProvider->rollbackTransaction(); +} + +void PerformTransaction::commit() +{ + mDataProvider->commitTransaction(); + mCommitted = true; +} + + /** * Constructor. */ |