Mercurial > hg > orthanc
diff Plugins/Engine/OrthancPlugins.cpp @ 1609:c74495267acf
Implementation of the "GetAllPublicIdsWithLimit" extension
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 02 Sep 2015 15:07:47 +0200 |
parents | adc6a5704cdb |
children | 96582230ddcb |
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPlugins.cpp Wed Sep 02 13:58:08 2015 +0200 +++ b/Plugins/Engine/OrthancPlugins.cpp Wed Sep 02 15:07:47 2015 +0200 @@ -1409,10 +1409,24 @@ case _OrthancPluginService_RegisterDatabaseBackend: { LOG(INFO) << "Plugin has registered a custom database back-end"; + const _OrthancPluginRegisterDatabaseBackend& p = *reinterpret_cast<const _OrthancPluginRegisterDatabaseBackend*>(parameters); + pimpl_->database_.reset(new OrthancPluginDatabase(*p.backend, NULL, 0, p.payload)); - pimpl_->database_.reset(new OrthancPluginDatabase(*p.backend, p.payload)); + *(p.result) = reinterpret_cast<OrthancPluginDatabaseContext*>(pimpl_->database_.get()); + + return true; + } + + case _OrthancPluginService_RegisterDatabaseBackendV2: + { + LOG(INFO) << "Plugin has registered a custom database back-end"; + + const _OrthancPluginRegisterDatabaseBackendV2& p = + *reinterpret_cast<const _OrthancPluginRegisterDatabaseBackendV2*>(parameters); + pimpl_->database_.reset(new OrthancPluginDatabase(*p.backend, p.extensions, p.extensionsSize, p.payload)); + *(p.result) = reinterpret_cast<OrthancPluginDatabaseContext*>(pimpl_->database_.get()); return true; @@ -1528,8 +1542,15 @@ case _OrthancPluginService_FreeImage: { const _OrthancPluginFreeImage& p = *reinterpret_cast<const _OrthancPluginFreeImage*>(parameters); - delete reinterpret_cast<ImageAccessor*>(p.image); - return true; + if (p.image == NULL) + { + throw OrthancException(ErrorCode_ParameterOutOfRange); + } + else + { + delete reinterpret_cast<ImageAccessor*>(p.image); + return true; + } } case _OrthancPluginService_UncompressImage: