Mercurial > hg > orthanc-databases
comparison Framework/Plugins/DatabaseBackendAdapterV3.cpp @ 222:c8e06b41feec
refactoring registration/finalization of index backend
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 01 Apr 2021 11:16:13 +0200 |
parents | 73cc85f3d9c1 |
children | af049cd66661 |
comparison
equal
deleted
inserted
replaced
221:73cc85f3d9c1 | 222:c8e06b41feec |
---|---|
1753 } | 1753 } |
1754 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext()); | 1754 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext()); |
1755 } | 1755 } |
1756 | 1756 |
1757 | 1757 |
1758 void DatabaseBackendAdapterV3::Register(IndexBackend& database) | 1758 static std::unique_ptr<IndexBackend> backend_; |
1759 { | 1759 |
1760 void DatabaseBackendAdapterV3::Register(IndexBackend* backend) | |
1761 { | |
1762 if (backend == NULL) | |
1763 { | |
1764 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); | |
1765 } | |
1766 | |
1767 if (backend_.get() != NULL) | |
1768 { | |
1769 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | |
1770 } | |
1771 | |
1772 backend_.reset(backend); | |
1773 | |
1760 OrthancPluginDatabaseBackendV3 params; | 1774 OrthancPluginDatabaseBackendV3 params; |
1761 memset(¶ms, 0, sizeof(params)); | 1775 memset(¶ms, 0, sizeof(params)); |
1762 | 1776 |
1763 params.readAnswersCount = ReadAnswersCount; | 1777 params.readAnswersCount = ReadAnswersCount; |
1764 params.readAnswerAttachment = ReadAnswerAttachment; | 1778 params.readAnswerAttachment = ReadAnswerAttachment; |
1827 params.setGlobalProperty = SetGlobalProperty; | 1841 params.setGlobalProperty = SetGlobalProperty; |
1828 params.setMetadata = SetMetadata; | 1842 params.setMetadata = SetMetadata; |
1829 params.setProtectedPatient = SetProtectedPatient; | 1843 params.setProtectedPatient = SetProtectedPatient; |
1830 params.setResourcesContent = SetResourcesContent; | 1844 params.setResourcesContent = SetResourcesContent; |
1831 | 1845 |
1832 OrthancPluginContext* context = database.GetContext(); | 1846 OrthancPluginContext* context = backend_->GetContext(); |
1833 | 1847 |
1834 if (OrthancPluginRegisterDatabaseBackendV3(context, ¶ms, sizeof(params), &database) != OrthancPluginErrorCode_Success) | 1848 if (OrthancPluginRegisterDatabaseBackendV3(context, ¶ms, sizeof(params), backend_.get()) != OrthancPluginErrorCode_Success) |
1835 { | 1849 { |
1836 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Unable to register the database backend"); | 1850 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Unable to register the database backend"); |
1837 } | 1851 } |
1838 | 1852 |
1839 database.SetOutputFactory(new Factory); | 1853 backend_->SetOutputFactory(new Factory); |
1854 } | |
1855 | |
1856 | |
1857 void DatabaseBackendAdapterV3::Finalize() | |
1858 { | |
1859 backend_.reset(NULL); | |
1840 } | 1860 } |
1841 } | 1861 } |
1842 | 1862 |
1843 # endif | 1863 # endif |
1844 #endif | 1864 #endif |