diff OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.h @ 5810:1f6642c04541 attach-custom-data

fix
author Alain Mazy <am@orthanc.team>
date Tue, 24 Sep 2024 15:15:51 +0200
parents 023a99146dd0
children a451777236fb
line wrap: on
line diff
--- a/OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.h	Tue Sep 24 12:53:43 2024 +0200
+++ b/OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.h	Tue Sep 24 15:15:51 2024 +0200
@@ -7,95 +7,54 @@
  * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
  *
  * This program is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- * 
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  **/
 
 
+
 #pragma once
 
-#if ORTHANC_ENABLE_PLUGINS == 1
+#include "IndexBackend.h"
+
+
+#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)         // Macro introduced in Orthanc 1.3.1
+#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 12, 0)
 
-#include "../../../OrthancFramework/Sources/SharedLibrary.h"
-#include "../../Sources/Database/IDatabaseWrapper.h"
-#include "../Include/orthanc/OrthancCPlugin.h"
-#include "PluginsErrorDictionary.h"
-
-namespace Orthanc
-{
-  class OrthancPluginDatabaseV4 : public IDatabaseWrapper
+namespace OrthancDatabases
+{  
+  /**
+   * @brief Bridge between C and C++ database engines.
+   * 
+   * Class creating the bridge between the C low-level primitives for
+   * custom database engines, and the high-level IDatabaseBackend C++
+   * interface, through ProtocolBuffers for Orthanc >= 1.12.0.
+   **/
+  class DatabaseBackendAdapterV4
   {
   private:
-    class Transaction;
-
-    SharedLibrary&                          library_;
-    PluginsErrorDictionary&                 errorDictionary_;
-    _OrthancPluginRegisterDatabaseBackendV4 definition_;
-    std::string                             serverIdentifier_;
-    bool                                    open_;
-    unsigned int                            databaseVersion_;
-    IDatabaseWrapper::Capabilities          dbCapabilities_;
-
-    void CheckSuccess(OrthancPluginErrorCode code) const;
+    // This class cannot be instantiated
+    DatabaseBackendAdapterV4()
+    {
+    }
 
   public:
-    OrthancPluginDatabaseV4(SharedLibrary& library,
-                            PluginsErrorDictionary& errorDictionary,
-                            const _OrthancPluginRegisterDatabaseBackendV4& database,
-                            const std::string& serverIdentifier);
-
-    virtual ~OrthancPluginDatabaseV4();
-
-    const _OrthancPluginRegisterDatabaseBackendV4& GetDefinition() const
-    {
-      return definition_;
-    }
-
-    PluginsErrorDictionary& GetErrorDictionary() const
-    {
-      return errorDictionary_;
-    }
-
-    const std::string& GetServerIdentifier() const
-    {
-      return serverIdentifier_;
-    }
-    
-    virtual void Open() ORTHANC_OVERRIDE;
+    static void Register(IndexBackend* backend,
+                         size_t countConnections,
+                         unsigned int maxDatabaseRetries);
 
-    virtual void Close() ORTHANC_OVERRIDE;
-
-    const SharedLibrary& GetSharedLibrary() const
-    {
-      return library_;
-    }
-
-    virtual void FlushToDisk() ORTHANC_OVERRIDE;
-
-    virtual IDatabaseWrapper::ITransaction* StartTransaction(TransactionType type,
-                                                             IDatabaseListener& listener)
-      ORTHANC_OVERRIDE;
-
-    virtual unsigned int GetDatabaseVersion() ORTHANC_OVERRIDE;
-
-    virtual void Upgrade(unsigned int targetVersion,
-                         IStorageArea& storageArea) ORTHANC_OVERRIDE;    
-
-    virtual uint64_t MeasureLatency() ORTHANC_OVERRIDE;
-
-    virtual const Capabilities GetDatabaseCapabilities() const ORTHANC_OVERRIDE;
-
-    virtual bool HasIntegratedFind() const ORTHANC_OVERRIDE;
+    static void Finalize();
   };
 }
 
+#  endif
 #endif