Mercurial > hg > orthanc-databases
comparison Framework/Plugins/StorageBackend.cpp @ 207:d9ef3f16e6a2
wrapping transactions in API v3
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 19 Mar 2021 15:11:45 +0100 |
parents | 53bd9022c58b |
children | 696bc0c9fddb |
comparison
equal
deleted
inserted
replaced
206:6dcf57074dd4 | 207:d9ef3f16e6a2 |
---|---|
159 int64_t size, | 159 int64_t size, |
160 OrthancPluginContentType type) | 160 OrthancPluginContentType type) |
161 { | 161 { |
162 try | 162 try |
163 { | 163 { |
164 DatabaseManager::Transaction transaction(backend_->GetManager()); | 164 DatabaseManager::Transaction transaction(backend_->GetManager(), TransactionType_ReadWrite); |
165 backend_->Create(transaction, uuid, content, static_cast<size_t>(size), type); | 165 backend_->Create(transaction, uuid, content, static_cast<size_t>(size), type); |
166 transaction.Commit(); | 166 transaction.Commit(); |
167 return OrthancPluginErrorCode_Success; | 167 return OrthancPluginErrorCode_Success; |
168 } | 168 } |
169 ORTHANC_PLUGINS_DATABASE_CATCH; | 169 ORTHANC_PLUGINS_DATABASE_CATCH; |
172 | 172 |
173 #if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 9, 0) | 173 #if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 9, 0) |
174 static OrthancPluginErrorCode StorageReadWhole(OrthancPluginMemoryBuffer64 *target, | 174 static OrthancPluginErrorCode StorageReadWhole(OrthancPluginMemoryBuffer64 *target, |
175 const char* uuid, | 175 const char* uuid, |
176 OrthancPluginContentType type) | 176 OrthancPluginContentType type) |
177 { | |
178 try | |
179 { | |
180 StorageAreaBuffer buffer(context_); | |
181 | |
182 { | |
183 DatabaseManager::Transaction transaction(backend_->GetManager(), TransactionType_ReadOnly); | |
184 backend_->Read(buffer, transaction, uuid, type); | |
185 transaction.Commit(); | |
186 } | |
187 | |
188 buffer.Move(target); | |
189 | |
190 return OrthancPluginErrorCode_Success; | |
191 } | |
192 ORTHANC_PLUGINS_DATABASE_CATCH; | |
193 } | |
194 #else | |
195 static OrthancPluginErrorCode StorageRead(void** content, | |
196 int64_t* size, | |
197 const char* uuid, | |
198 OrthancPluginContentType type) | |
177 { | 199 { |
178 try | 200 try |
179 { | 201 { |
180 StorageAreaBuffer buffer(context_); | 202 StorageAreaBuffer buffer(context_); |
181 | 203 |
183 DatabaseManager::Transaction transaction(backend_->GetManager()); | 205 DatabaseManager::Transaction transaction(backend_->GetManager()); |
184 backend_->Read(buffer, transaction, uuid, type); | 206 backend_->Read(buffer, transaction, uuid, type); |
185 transaction.Commit(); | 207 transaction.Commit(); |
186 } | 208 } |
187 | 209 |
188 buffer.Move(target); | |
189 | |
190 return OrthancPluginErrorCode_Success; | |
191 } | |
192 ORTHANC_PLUGINS_DATABASE_CATCH; | |
193 } | |
194 #else | |
195 static OrthancPluginErrorCode StorageRead(void** content, | |
196 int64_t* size, | |
197 const char* uuid, | |
198 OrthancPluginContentType type) | |
199 { | |
200 try | |
201 { | |
202 StorageAreaBuffer buffer(context_); | |
203 | |
204 { | |
205 DatabaseManager::Transaction transaction(backend_->GetManager()); | |
206 backend_->Read(buffer, transaction, uuid, type); | |
207 transaction.Commit(); | |
208 } | |
209 | |
210 *size = buffer.GetSize(); | 210 *size = buffer.GetSize(); |
211 *content = buffer.ReleaseData(); | 211 *content = buffer.ReleaseData(); |
212 | 212 |
213 return OrthancPluginErrorCode_Success; | 213 return OrthancPluginErrorCode_Success; |
214 } | 214 } |
220 static OrthancPluginErrorCode StorageRemove(const char* uuid, | 220 static OrthancPluginErrorCode StorageRemove(const char* uuid, |
221 OrthancPluginContentType type) | 221 OrthancPluginContentType type) |
222 { | 222 { |
223 try | 223 try |
224 { | 224 { |
225 DatabaseManager::Transaction transaction(backend_->GetManager()); | 225 DatabaseManager::Transaction transaction(backend_->GetManager(), TransactionType_ReadWrite); |
226 backend_->Remove(transaction, uuid, type); | 226 backend_->Remove(transaction, uuid, type); |
227 transaction.Commit(); | 227 transaction.Commit(); |
228 return OrthancPluginErrorCode_Success; | 228 return OrthancPluginErrorCode_Success; |
229 } | 229 } |
230 ORTHANC_PLUGINS_DATABASE_CATCH; | 230 ORTHANC_PLUGINS_DATABASE_CATCH; |