Mercurial > hg > orthanc-databases
comparison 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 |
comparison
equal
deleted
inserted
replaced
22:1e9bad493475 | 23:b2ff1cd2907a |
---|---|
52 IPrecompiledStatement& CacheStatement(const StatementLocation& location, | 52 IPrecompiledStatement& CacheStatement(const StatementLocation& location, |
53 const Query& query); | 53 const Query& query); |
54 | 54 |
55 ITransaction& GetTransaction(); | 55 ITransaction& GetTransaction(); |
56 | 56 |
57 void ReleaseImplicitTransaction(); | |
58 | |
57 public: | 59 public: |
58 DatabaseManager(IDatabaseFactory* factory); // Takes ownership | 60 DatabaseManager(IDatabaseFactory* factory); // Takes ownership |
59 | 61 |
60 ~DatabaseManager() | 62 ~DatabaseManager() |
61 { | 63 { |
79 void CommitTransaction(); | 81 void CommitTransaction(); |
80 | 82 |
81 void RollbackTransaction(); | 83 void RollbackTransaction(); |
82 | 84 |
83 | 85 |
86 // This class is only used in the "StorageBackend" | |
84 class Transaction : public boost::noncopyable | 87 class Transaction : public boost::noncopyable |
85 { | 88 { |
86 private: | 89 private: |
87 boost::recursive_mutex::scoped_lock lock_; | 90 boost::recursive_mutex::scoped_lock lock_; |
88 DatabaseManager& manager_; | 91 DatabaseManager& manager_; |
89 IDatabase& database_; | 92 IDatabase& database_; |
93 bool committed_; | |
90 | 94 |
91 public: | 95 public: |
92 Transaction(DatabaseManager& manager) : | 96 Transaction(DatabaseManager& manager); |
93 lock_(manager.mutex_), | |
94 manager_(manager), | |
95 database_(manager.GetDatabase()) | |
96 { | |
97 } | |
98 | 97 |
99 void Commit() | 98 ~Transaction(); |
100 { | 99 |
101 manager_.CommitTransaction(); | 100 void Commit(); |
102 } | |
103 | |
104 void Rollback() | |
105 { | |
106 manager_.RollbackTransaction(); | |
107 } | |
108 | 101 |
109 DatabaseManager& GetManager() | 102 DatabaseManager& GetManager() |
110 { | 103 { |
111 return manager_; | 104 return manager_; |
112 } | 105 } |
141 | 134 |
142 CachedStatement(const StatementLocation& location, | 135 CachedStatement(const StatementLocation& location, |
143 Transaction& transaction, | 136 Transaction& transaction, |
144 const char* sql); | 137 const char* sql); |
145 | 138 |
139 ~CachedStatement(); | |
140 | |
146 IDatabase& GetDatabase() | 141 IDatabase& GetDatabase() |
147 { | 142 { |
148 return database_; | 143 return database_; |
149 } | 144 } |
150 | 145 |