Mercurial > hg > orthanc
diff OrthancServer/Sources/OrthancWebDav.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 | 6831de40acd9 |
children | 350a22c094f2 |
line wrap: on
line diff
--- a/OrthancServer/Sources/OrthancWebDav.cpp Thu Feb 11 09:33:48 2021 +0100 +++ b/OrthancServer/Sources/OrthancWebDav.cpp Thu Feb 11 11:00:05 2021 +0100 @@ -1282,15 +1282,14 @@ { LOG(INFO) << "Uploading DICOM file extracted from a ZIP archive in WebDAV: " << filename; - DicomInstanceToStore instance; - instance.SetOrigin(DicomInstanceOrigin::FromWebDav()); - instance.SetBuffer(uncompressedFile.c_str(), uncompressedFile.size()); + std::unique_ptr<DicomInstanceToStore> instance(DicomInstanceToStore::CreateFromBuffer(uncompressedFile)); + instance->SetOrigin(DicomInstanceOrigin::FromWebDav()); std::string publicId; try { - context_.Store(publicId, instance, StoreInstanceMode_Default); + context_.Store(publicId, *instance, StoreInstanceMode_Default); } catch (OrthancException& e) { @@ -1306,14 +1305,13 @@ } else { - DicomInstanceToStore instance; - instance.SetOrigin(DicomInstanceOrigin::FromWebDav()); - instance.SetBuffer(content.c_str(), content.size()); + std::unique_ptr<DicomInstanceToStore> instance(DicomInstanceToStore::CreateFromBuffer(content)); + instance->SetOrigin(DicomInstanceOrigin::FromWebDav()); try { std::string publicId; - StoreStatus status = context_.Store(publicId, instance, StoreInstanceMode_Default); + StoreStatus status = context_.Store(publicId, *instance, StoreInstanceMode_Default); if (status == StoreStatus_Success || status == StoreStatus_AlreadyStored) {