diff OrthancServer/ServerContext.cpp @ 3814:023b2a9f3aa1 transcoding

new enum: StoreInstanceMode
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Apr 2020 17:35:44 +0200
parents aaaa442bfe39
children 5bba4d249422
line wrap: on
line diff
--- a/OrthancServer/ServerContext.cpp	Tue Apr 07 14:03:33 2020 +0200
+++ b/OrthancServer/ServerContext.cpp	Tue Apr 07 17:35:44 2020 +0200
@@ -340,8 +340,28 @@
 
 
   StoreStatus ServerContext::Store(std::string& resultPublicId,
-                                   DicomInstanceToStore& dicom)
+                                   DicomInstanceToStore& dicom,
+                                   StoreInstanceMode mode)
   {
+    bool overwrite;
+    switch (mode)
+    {
+      case StoreInstanceMode_Default:
+        overwrite = overwriteInstances_;
+        break;
+        
+      case StoreInstanceMode_OverwriteDuplicate:
+        overwrite = true;
+        break;
+        
+      case StoreInstanceMode_IgnoreDuplicate:
+        overwrite = false;
+        break;
+
+      default:
+        throw OrthancException(ErrorCode_ParameterOutOfRange);
+    }    
+    
     try
     {
       MetricsRegistry::Timer timer(GetMetricsRegistry(), "orthanc_store_dicom_duration_ms");
@@ -406,7 +426,7 @@
       typedef std::map<MetadataType, std::string>  InstanceMetadata;
       InstanceMetadata  instanceMetadata;
       StoreStatus status = index_.Store(
-        instanceMetadata, dicom, attachments, overwriteInstances_);
+        instanceMetadata, dicom, attachments, overwrite);
 
       // Only keep the metadata for the "instance" level
       dicom.GetMetadata().clear();