diff OrthancServer/Sources/ServerJobs/Operations/ModifyInstanceOperation.cpp @ 4508:8f9090b137f1

Optimization in C-STORE SCP by avoiding an unnecessary DICOM parsing
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 11 Feb 2021 11:00:05 +0100
parents d9473bd5ed43
children f0038043fb97 7053502fbf97
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerJobs/Operations/ModifyInstanceOperation.cpp	Thu Feb 11 09:33:48 2021 +0100
+++ b/OrthancServer/Sources/ServerJobs/Operations/ModifyInstanceOperation.cpp	Thu Feb 11 11:00:05 2021 +0100
@@ -104,16 +104,15 @@
     {
       modification_->Apply(*modified);
 
-      DicomInstanceToStore toStore;
+      std::unique_ptr<DicomInstanceToStore> toStore(DicomInstanceToStore::CreateFromParsedDicomFile(*modified));
       assert(origin_ == RequestOrigin_Lua);
-      toStore.SetOrigin(DicomInstanceOrigin::FromLua());
-      toStore.SetParsedDicomFile(*modified);
+      toStore->SetOrigin(DicomInstanceOrigin::FromLua());
 
       // TODO other metadata
-      toStore.AddMetadata(ResourceType_Instance, MetadataType_ModifiedFrom, instance.GetId());
+      toStore->AddMetadata(ResourceType_Instance, MetadataType_ModifiedFrom, instance.GetId());
 
       std::string modifiedId;
-      context_.Store(modifiedId, toStore, StoreInstanceMode_Default);
+      context_.Store(modifiedId, *toStore, StoreInstanceMode_Default);
 
       // Only chain with other commands if this command succeeds
       outputs.Append(new DicomInstanceOperationValue(instance.GetServerContext(), modifiedId));