summaryrefslogtreecommitdiff
path: root/src/dal/dataprovider.cpp
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2010-10-30 10:22:17 +0200
committerThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2010-10-30 10:59:07 +0200
commite4713d0203311fdfcfef72ae5632782075159a56 (patch)
treeca2ce2177b608a87b50c80837c607fa513e00ea3 /src/dal/dataprovider.cpp
parenta84572c5449c74d9107a9c725a5feb32e439843e (diff)
downloadmanaserv-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.cpp20
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.
*/