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