Mercurial > hg > orthanc
diff OrthancServer/Sources/ServerJobs/ResourceModificationJob.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 | 45bce660ce3a |
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerJobs/ResourceModificationJob.cpp Thu Feb 11 09:33:48 2021 +0100 +++ b/OrthancServer/Sources/ServerJobs/ResourceModificationJob.cpp Thu Feb 11 11:00:05 2021 +0100 @@ -210,9 +210,8 @@ assert(modifiedUid == IDicomTranscoder::GetSopInstanceUid(modified->GetDcmtkObject())); - DicomInstanceToStore toStore; - toStore.SetOrigin(origin_); - toStore.SetParsedDicomFile(*modified); + std::unique_ptr<DicomInstanceToStore> toStore(DicomInstanceToStore::CreateFromParsedDicomFile(*modified)); + toStore->SetOrigin(origin_); /** @@ -228,21 +227,21 @@ if (originalHasher->HashSeries() != modifiedHasher.HashSeries()) { - toStore.AddMetadata(ResourceType_Series, metadataType, originalHasher->HashSeries()); + toStore->AddMetadata(ResourceType_Series, metadataType, originalHasher->HashSeries()); } if (originalHasher->HashStudy() != modifiedHasher.HashStudy()) { - toStore.AddMetadata(ResourceType_Study, metadataType, originalHasher->HashStudy()); + toStore->AddMetadata(ResourceType_Study, metadataType, originalHasher->HashStudy()); } if (originalHasher->HashPatient() != modifiedHasher.HashPatient()) { - toStore.AddMetadata(ResourceType_Patient, metadataType, originalHasher->HashPatient()); + toStore->AddMetadata(ResourceType_Patient, metadataType, originalHasher->HashPatient()); } assert(instance == originalHasher->HashInstance()); - toStore.AddMetadata(ResourceType_Instance, metadataType, instance); + toStore->AddMetadata(ResourceType_Instance, metadataType, instance); /** @@ -250,7 +249,7 @@ **/ std::string modifiedInstance; - if (GetContext().Store(modifiedInstance, toStore, + if (GetContext().Store(modifiedInstance, *toStore, StoreInstanceMode_Default) != StoreStatus_Success) { throw OrthancException(ErrorCode_CannotStoreInstance,