Mercurial > hg > orthanc-databases
diff Framework/Plugins/StorageBackend.h @ 12:41543239072d
transactions for storage area
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 09 Jul 2018 18:34:56 +0200 |
parents | d17b2631bb67 |
children | 9774802fd05f |
line wrap: on
line diff
--- a/Framework/Plugins/StorageBackend.h Mon Jul 09 11:45:52 2018 +0200 +++ b/Framework/Plugins/StorageBackend.h Mon Jul 09 18:34:56 2018 +0200 @@ -33,31 +33,39 @@ DatabaseManager manager_; protected: - DatabaseManager& GetManager() - { - return manager_; - } - + void ReadFromString(void*& buffer, + size_t& size, + const std::string& content); + public: StorageBackend(IDatabaseFactory* factory); virtual ~StorageBackend() { } + + DatabaseManager& GetManager() + { + return manager_; + } - // WARNING: These methods can possibly be invoked simultaneously - // (no mutual exclusion in the storage area plugins) - virtual void Create(const std::string& uuid, + // NB: These methods will always be invoked in mutual exclusion, + // as having access to some "DatabaseManager::Transaction" implies + // that the parent "DatabaseManager" is locked + virtual void Create(DatabaseManager::Transaction& transaction, + const std::string& uuid, const void* content, size_t size, OrthancPluginContentType type) = 0; virtual void Read(void*& content, size_t& size, + DatabaseManager::Transaction& transaction, const std::string& uuid, OrthancPluginContentType type) = 0; - virtual void Remove(const std::string& uuid, + virtual void Remove(DatabaseManager::Transaction& transaction, + const std::string& uuid, OrthancPluginContentType type) = 0; static void Register(OrthancPluginContext* context,