Mercurial > hg > orthanc-databases
diff Framework/Common/DatabaseManager.h @ 23:b2ff1cd2907a
handling of implicit transactions in DatabaseManager
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 12 Jul 2018 10:44:17 +0200 |
parents | c7c54993a92e |
children | 2fb9cd42af14 |
line wrap: on
line diff
--- a/Framework/Common/DatabaseManager.h Wed Jul 11 14:39:59 2018 +0200 +++ b/Framework/Common/DatabaseManager.h Thu Jul 12 10:44:17 2018 +0200 @@ -54,6 +54,8 @@ ITransaction& GetTransaction(); + void ReleaseImplicitTransaction(); + public: DatabaseManager(IDatabaseFactory* factory); // Takes ownership @@ -81,30 +83,21 @@ void RollbackTransaction(); + // This class is only used in the "StorageBackend" class Transaction : public boost::noncopyable { private: boost::recursive_mutex::scoped_lock lock_; DatabaseManager& manager_; IDatabase& database_; + bool committed_; public: - Transaction(DatabaseManager& manager) : - lock_(manager.mutex_), - manager_(manager), - database_(manager.GetDatabase()) - { - } + Transaction(DatabaseManager& manager); - void Commit() - { - manager_.CommitTransaction(); - } - - void Rollback() - { - manager_.RollbackTransaction(); - } + ~Transaction(); + + void Commit(); DatabaseManager& GetManager() { @@ -143,6 +136,8 @@ Transaction& transaction, const char* sql); + ~CachedStatement(); + IDatabase& GetDatabase() { return database_;