Mercurial > hg > orthanc-databases
comparison 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 |
comparison
equal
deleted
inserted
replaced
11:0217486720b3 | 12:41543239072d |
---|---|
31 { | 31 { |
32 private: | 32 private: |
33 DatabaseManager manager_; | 33 DatabaseManager manager_; |
34 | 34 |
35 protected: | 35 protected: |
36 DatabaseManager& GetManager() | 36 void ReadFromString(void*& buffer, |
37 { | 37 size_t& size, |
38 return manager_; | 38 const std::string& content); |
39 } | 39 |
40 | |
41 public: | 40 public: |
42 StorageBackend(IDatabaseFactory* factory); | 41 StorageBackend(IDatabaseFactory* factory); |
43 | 42 |
44 virtual ~StorageBackend() | 43 virtual ~StorageBackend() |
45 { | 44 { |
46 } | 45 } |
46 | |
47 DatabaseManager& GetManager() | |
48 { | |
49 return manager_; | |
50 } | |
47 | 51 |
48 // WARNING: These methods can possibly be invoked simultaneously | 52 // NB: These methods will always be invoked in mutual exclusion, |
49 // (no mutual exclusion in the storage area plugins) | 53 // as having access to some "DatabaseManager::Transaction" implies |
50 virtual void Create(const std::string& uuid, | 54 // that the parent "DatabaseManager" is locked |
55 virtual void Create(DatabaseManager::Transaction& transaction, | |
56 const std::string& uuid, | |
51 const void* content, | 57 const void* content, |
52 size_t size, | 58 size_t size, |
53 OrthancPluginContentType type) = 0; | 59 OrthancPluginContentType type) = 0; |
54 | 60 |
55 virtual void Read(void*& content, | 61 virtual void Read(void*& content, |
56 size_t& size, | 62 size_t& size, |
63 DatabaseManager::Transaction& transaction, | |
57 const std::string& uuid, | 64 const std::string& uuid, |
58 OrthancPluginContentType type) = 0; | 65 OrthancPluginContentType type) = 0; |
59 | 66 |
60 virtual void Remove(const std::string& uuid, | 67 virtual void Remove(DatabaseManager::Transaction& transaction, |
68 const std::string& uuid, | |
61 OrthancPluginContentType type) = 0; | 69 OrthancPluginContentType type) = 0; |
62 | 70 |
63 static void Register(OrthancPluginContext* context, | 71 static void Register(OrthancPluginContext* context, |
64 StorageBackend* backend); // Takes ownership | 72 StorageBackend* backend); // Takes ownership |
65 | 73 |