diff OrthancServer/Plugins/Engine/OrthancPlugins.cpp @ 4921:309fb4f02704

fix signature of OrthancPluginIncomingCStoreInstanceFilter
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 23 Feb 2022 11:09:43 +0100
parents 676e03e69703
children 47d734fa30f6
line wrap: on
line diff
--- a/OrthancServer/Plugins/Engine/OrthancPlugins.cpp	Wed Feb 23 09:30:53 2022 +0100
+++ b/OrthancServer/Plugins/Engine/OrthancPlugins.cpp	Wed Feb 23 11:09:43 2022 +0100
@@ -2260,8 +2260,9 @@
 
 
 
-  uint16_t OrthancPlugins::FilterIncomingCStoreInstance(const DicomInstanceToStore& instance,
-                                                        const Json::Value& simplified)
+  bool OrthancPlugins::FilterIncomingCStoreInstance(uint16_t& dimseStatus,
+                                                    const DicomInstanceToStore& instance,
+                                                    const Json::Value& simplified)
   {
     DicomInstanceFromCallback wrapped(instance);
     
@@ -2271,20 +2272,26 @@
            filter = pimpl_->incomingCStoreInstanceFilters_.begin();
          filter != pimpl_->incomingCStoreInstanceFilters_.end(); ++filter)
     {
-      int32_t filterResult = (*filter) (reinterpret_cast<const OrthancPluginDicomInstance*>(&wrapped));
-
-      if (filterResult >= 0 && filterResult <= 0xFFFF)
-      {
-        return static_cast<uint16_t>(filterResult);
+      int32_t result = (*filter) (&dimseStatus, reinterpret_cast<const OrthancPluginDicomInstance*>(&wrapped));
+
+      if (result == 0)
+      {
+        // The instance must be discarded
+        return false;
+      }
+      else if (result == 1)
+      {
+        // The instance is accepted
+        return true;
       }
       else
       {
-        // The callback is only allowed to answer uint16_t
+        // Error
         throw OrthancException(ErrorCode_Plugin);
       }
     }
 
-    return STATUS_Success;
+    return true;  // By default, the instance is accepted
   }