Mercurial > hg > orthanc
diff OrthancServer/Sources/ServerJobs/ResourceModificationJob.cpp @ 5141:023569e7155b
moved DicomModification thread safety into ResourceModificationJob (trying to avoid mutex in OrthancFramework as much as possible)
author | Alain Mazy <am@osimis.io> |
---|---|
date | Fri, 20 Jan 2023 18:10:42 +0100 |
parents | 021d7fdcb659 |
children | 45ce9dfa42e0 |
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerJobs/ResourceModificationJob.cpp Fri Jan 20 17:24:35 2023 +0100 +++ b/OrthancServer/Sources/ServerJobs/ResourceModificationJob.cpp Fri Jan 20 18:10:42 2023 +0100 @@ -230,7 +230,11 @@ * Compute the resulting DICOM instance. **/ - modification_->Apply(*modified); + { + boost::recursive_mutex::scoped_lock lock(mutex_); // DicomModification object is not thread safe, we must protect it from here + + modification_->Apply(*modified); + } const std::string modifiedUid = IDicomTranscoder::GetSopInstanceUid(modified->GetDcmtkObject()); @@ -406,6 +410,7 @@ } +#if ORTHANC_BUILD_UNIT_TESTS == 1 const DicomModification& ResourceModificationJob::GetModification() const { if (modification_.get() == NULL) @@ -417,7 +422,7 @@ return *modification_; } } - +#endif DicomTransferSyntax ResourceModificationJob::GetTransferSyntax() const { @@ -627,7 +632,13 @@ origin_.Serialize(value[ORIGIN]); Json::Value tmp; - modification_->Serialize(tmp); + + { + boost::recursive_mutex::scoped_lock lock(mutex_); // DicomModification object is not thread safe, we must protect it from here + + modification_->Serialize(tmp); + } + value[MODIFICATION] = tmp; // New in Orthanc 1.9.4 @@ -757,7 +768,6 @@ } } } - // TODO: need reconstruct_ } } }