Mercurial > hg > orthanc
diff OrthancServer/Sources/OrthancRestApi/OrthancRestAnonymizeModify.cpp @ 5130:f2dcdbe05884
ResourceModification jobs can now use multiple threads
author | Alain Mazy <am@osimis.io> |
---|---|
date | Thu, 05 Jan 2023 17:24:43 +0100 |
parents | 8638522eeda1 |
children | 15109c3f0f7d |
line wrap: on
line diff
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestAnonymizeModify.cpp Mon Dec 19 20:00:21 2022 +0100 +++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestAnonymizeModify.cpp Thu Jan 05 17:24:43 2023 +0100 @@ -333,6 +333,15 @@ } } + static void SetKeepSource(ThreadedSetOfInstancesJob& job, + const Json::Value& body) + { + if (body.isMember(KEEP_SOURCE)) + { + job.SetKeepSource(SerializationToolbox::ReadBoolean(body, KEEP_SOURCE)); + } + } + static void SubmitModificationJob(std::unique_ptr<DicomModification>& modification, bool isAnonymization, @@ -343,8 +352,14 @@ const std::set<std::string>& resources) { ServerContext& context = OrthancRestApi::GetContext(call); + unsigned int workersCount = 0; - std::unique_ptr<ResourceModificationJob> job(new ResourceModificationJob(context)); + { + OrthancConfiguration::ReaderLock lock; + workersCount = lock.GetConfiguration().GetJobsEngineWorkersThread("ResourceModification"); + } + + std::unique_ptr<ResourceModificationJob> job(new ResourceModificationJob(context, workersCount)); if (isSingleResource) // This notably configures the output format { @@ -366,12 +381,14 @@ for (std::set<std::string>::const_iterator it = resources.begin(); it != resources.end(); ++it) { - context.AddChildInstances(*job, *it); + std::list<std::string> instances; + context.GetIndex().GetChildInstances(instances, *it); + job->AddInstances(instances); + + job->AddParentResource(*it); } - job->AddTrailingStep(); - - OrthancRestApi::GetApi(call).SubmitCommandsJob + OrthancRestApi::GetApi(call).SubmitThreadedInstancesJob (call, job.release(), true /* synchronous by default */, body); }