Mercurial > hg > orthanc-databases
diff Framework/Plugins/OrthancCppDatabasePlugin.h @ 1:d17b2631bb67
starting StorageBackend
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 04 Jul 2018 18:05:24 +0200 |
parents | 7cea966b6829 |
children | 9e419261f1c9 |
line wrap: on
line diff
--- a/Framework/Plugins/OrthancCppDatabasePlugin.h Wed Jul 04 08:16:29 2018 +0200 +++ b/Framework/Plugins/OrthancCppDatabasePlugin.h Wed Jul 04 18:05:24 2018 +0200 @@ -28,34 +28,30 @@ #pragma once -#include <orthanc/OrthancCDatabasePlugin.h> +#if HAS_ORTHANC_EXCEPTION != 1 +# error HAS_ORTHANC_EXCEPTION must be set to 1 +#endif + -#define ORTHANC_PLUGINS_DATABASE_CATCH_COMMON \ - catch (::std::runtime_error& e) \ - { \ - LogError(backend, e); \ - return OrthancPluginErrorCode_DatabasePlugin; \ - } \ - catch (::OrthancPlugins::DatabaseException& e) \ - { \ - return e.GetErrorCode(); \ - } \ - catch (...) \ - { \ - backend->GetOutput().LogError("Native exception"); \ - return OrthancPluginErrorCode_DatabasePlugin; \ - } +#include <orthanc/OrthancCDatabasePlugin.h> +#include <Core/OrthancException.h> -#if HAS_ORTHANC_EXCEPTION == 1 -# include <Core/OrthancException.h> -# define ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC \ + +#define ORTHANC_PLUGINS_DATABASE_CATCH \ catch (::Orthanc::OrthancException& e) \ { \ return static_cast<OrthancPluginErrorCode>(e.GetErrorCode()); \ + } \ + catch (::std::runtime_error& e) \ + { \ + LogError(backend, e); \ + return OrthancPluginErrorCode_DatabasePlugin; \ + } \ + catch (...) \ + { \ + backend->GetOutput().LogError("Native exception"); \ + return OrthancPluginErrorCode_DatabasePlugin; \ } -#else -# define ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC -#endif #include <stdexcept> @@ -64,55 +60,10 @@ namespace OrthancPlugins { -//! @cond Doxygen_Suppress - // This class mimics "boost::noncopyable" - class NonCopyable - { - private: - NonCopyable(const NonCopyable&); - - NonCopyable& operator= (const NonCopyable&); - - protected: - NonCopyable() - { - } - - ~NonCopyable() - { - } - }; -//! @endcond - - /** * @ingroup Callbacks **/ - class DatabaseException - { - private: - OrthancPluginErrorCode code_; - - public: - DatabaseException() : code_(OrthancPluginErrorCode_DatabasePlugin) - { - } - - DatabaseException(OrthancPluginErrorCode code) : code_(code) - { - } - - OrthancPluginErrorCode GetErrorCode() const - { - return code_; - } - }; - - - /** - * @ingroup Callbacks - **/ - class DatabaseBackendOutput : public NonCopyable + class DatabaseBackendOutput : public boost::noncopyable { friend class DatabaseBackendAdapter; @@ -298,7 +249,7 @@ /** * @ingroup Callbacks **/ - class IDatabaseBackend : public NonCopyable + class IDatabaseBackend : public boost::noncopyable { friend class DatabaseBackendAdapter; @@ -536,8 +487,7 @@ backend->AddAttachment(id, *attachment); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -553,8 +503,7 @@ backend->AttachChild(parent, child); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -568,8 +517,7 @@ backend->ClearChanges(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -583,8 +531,7 @@ backend->ClearExportedResources(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -601,8 +548,7 @@ *id = backend->CreateResource(publicId, resourceType); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -618,8 +564,7 @@ backend->DeleteAttachment(id, contentType); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -635,8 +580,7 @@ backend->DeleteMetadata(id, metadataType); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -651,8 +595,7 @@ backend->DeleteResource(id); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -677,8 +620,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -704,8 +646,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -733,8 +674,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -759,8 +699,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -785,8 +724,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -812,8 +750,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -837,8 +774,7 @@ } return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -853,8 +789,7 @@ backend->GetLastChange(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -869,8 +804,7 @@ backend->GetLastExportedResource(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -886,8 +820,7 @@ backend->GetMainDicomTags(id); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -907,8 +840,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -924,8 +856,7 @@ *target = backend->GetResourceCount(resourceType); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -941,8 +872,7 @@ *resourceType = backend->GetResourceType(id); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -957,8 +887,7 @@ *target = backend->GetTotalCompressedSize(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -973,8 +902,7 @@ *target = backend->GetTotalUncompressedSize(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -990,8 +918,7 @@ *existing = backend->IsExistingResource(id); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1007,8 +934,7 @@ *isProtected = backend->IsProtectedPatient(id); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1034,8 +960,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1061,8 +986,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1077,8 +1001,7 @@ backend->LogChange(*change); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1093,8 +1016,7 @@ backend->LogExportedResource(*exported); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1111,8 +1033,7 @@ backend->LookupAttachment(id, contentType); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1135,8 +1056,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1163,8 +1083,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1193,8 +1112,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1217,8 +1135,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1240,8 +1157,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1265,8 +1181,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1287,8 +1202,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1310,8 +1224,7 @@ return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1327,8 +1240,7 @@ backend->SetGlobalProperty(property, value); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1344,8 +1256,7 @@ backend->SetMainDicomTag(id, tag->group, tag->element, tag->value); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1361,8 +1272,7 @@ backend->SetIdentifierTag(id, tag->group, tag->element, tag->value); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1379,8 +1289,7 @@ backend->SetMetadata(id, metadata, value); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1396,8 +1305,7 @@ backend->SetProtectedPatient(id, (isProtected != 0)); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1411,8 +1319,7 @@ backend->StartTransaction(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1426,8 +1333,7 @@ backend->RollbackTransaction(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1441,8 +1347,7 @@ backend->CommitTransaction(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1456,8 +1361,7 @@ backend->Open(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1471,8 +1375,7 @@ backend->Close(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1486,8 +1389,7 @@ *version = backend->GetDatabaseVersion(); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1502,8 +1404,7 @@ backend->UpgradeDatabase(targetVersion, storageArea); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1517,8 +1418,7 @@ backend->ClearMainDicomTags(internalId); return OrthancPluginErrorCode_Success; } - ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC - ORTHANC_PLUGINS_DATABASE_CATCH_COMMON + ORTHANC_PLUGINS_DATABASE_CATCH } @@ -1608,7 +1508,8 @@ "against an old version of the Orthanc SDK, consider upgrading"); } - OrthancPluginDatabaseContext* database = OrthancPluginRegisterDatabaseBackendV2(context, ¶ms, &extensions, &backend); + OrthancPluginDatabaseContext* database = + OrthancPluginRegisterDatabaseBackendV2(context, ¶ms, &extensions, &backend); if (!context) { throw std::runtime_error("Unable to register the database backend");