# HG changeset patch # User Alain Mazy # Date 1727183751 -7200 # Node ID 1f6642c04541e5c8bc1d42102a428dc72963fec6 # Parent 023a99146dd0183eac0457bb1c2a532766fd7fab fix diff -r 023a99146dd0 -r 1f6642c04541 OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.h --- 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 . **/ + #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