# HG changeset patch # User Sebastien Jodogne # Date 1527240333 -7200 # Node ID e09021ddc00db8d643c8be043736a701a58a438f # Parent 5469dda691cddb00bdd0130e7720c289084d75e0 cleanup diff -r 5469dda691cd -r e09021ddc00d OrthancServer/OrthancRestApi/OrthancRestModalities.cpp --- a/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp Fri May 25 10:54:33 2018 +0200 +++ b/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp Fri May 25 11:25:33 2018 +0200 @@ -607,7 +607,7 @@ ***************************************************************************/ static bool GetInstancesToExport(Json::Value& otherArguments, - std::list& instances, + SetOfInstancesJob& job, const std::string& remote, RestApiPostCall& call) { @@ -681,15 +681,8 @@ { context.GetIndex().LogExportedResource(stripped, remote); } - - std::list tmp; - context.GetIndex().GetChildInstances(tmp, stripped); - for (std::list::const_iterator - it = tmp.begin(); it != tmp.end(); ++it) - { - instances.push_back(*it); - } + context.AddChildInstances(job, stripped); } return true; @@ -698,7 +691,6 @@ static void SubmitJob(RestApiPostCall& call, const Json::Value& request, - const std::list& instances, SetOfInstancesJob* jobRaw) { std::auto_ptr job(jobRaw); @@ -715,13 +707,6 @@ int priority = Toolbox::GetJsonIntegerField(request, "Priority", 0); job->SetPermissive(permissive); - job->Reserve(instances.size()); - - for (std::list::const_iterator - it = instances.begin(); it != instances.end(); ++it) - { - job->AddInstance(*it); - } if (asynchronous) { @@ -752,32 +737,30 @@ std::string remote = call.GetUriComponent("id", ""); Json::Value request; - std::list instances; - if (!GetInstancesToExport(request, instances, remote, call)) - { - return; - } + std::auto_ptr job(new DicomModalityStoreJob(context)); - std::string localAet = Toolbox::GetJsonStringField - (request, "LocalAet", context.GetDefaultLocalApplicationEntityTitle()); - std::string moveOriginatorAET = Toolbox::GetJsonStringField - (request, "MoveOriginatorAet", context.GetDefaultLocalApplicationEntityTitle()); - int moveOriginatorID = Toolbox::GetJsonIntegerField - (request, "MoveOriginatorID", 0 /* By default, not a C-MOVE */); + if (GetInstancesToExport(request, *job, remote, call)) + { + std::string localAet = Toolbox::GetJsonStringField + (request, "LocalAet", context.GetDefaultLocalApplicationEntityTitle()); + std::string moveOriginatorAET = Toolbox::GetJsonStringField + (request, "MoveOriginatorAet", context.GetDefaultLocalApplicationEntityTitle()); + int moveOriginatorID = Toolbox::GetJsonIntegerField + (request, "MoveOriginatorID", 0 /* By default, not a C-MOVE */); - RemoteModalityParameters p = Configuration::GetModalityUsingSymbolicName(remote); + RemoteModalityParameters p = Configuration::GetModalityUsingSymbolicName(remote); - std::auto_ptr job(new DicomModalityStoreJob(context)); - job->SetDescription("REST API"); - job->SetLocalAet(localAet); - job->SetRemoteModality(p); + job->SetDescription("REST API"); + job->SetLocalAet(localAet); + job->SetRemoteModality(p); - if (moveOriginatorID != 0) - { - job->SetMoveOriginator(moveOriginatorAET, moveOriginatorID); + if (moveOriginatorID != 0) + { + job->SetMoveOriginator(moveOriginatorAET, moveOriginatorID); + } + + SubmitJob(call, request, job.release()); } - - SubmitJob(call, request, instances, job.release()); } @@ -898,20 +881,18 @@ std::string remote = call.GetUriComponent("id", ""); Json::Value request; - std::list instances; - if (!GetInstancesToExport(request, instances, remote, call)) - { - return; - } + std::auto_ptr job(new OrthancPeerStoreJob(context)); - WebServiceParameters peer; - Configuration::GetOrthancPeer(peer, remote); - - std::auto_ptr job(new OrthancPeerStoreJob(context)); - job->SetDescription("REST API"); - job->SetPeer(peer); - - SubmitJob(call, request, instances, job.release()); + if (GetInstancesToExport(request, *job, remote, call)) + { + WebServiceParameters peer; + Configuration::GetOrthancPeer(peer, remote); + + job->SetDescription("REST API"); + job->SetPeer(peer); + + SubmitJob(call, request, job.release()); + } } diff -r 5469dda691cd -r e09021ddc00d OrthancServer/ServerContext.cpp --- a/OrthancServer/ServerContext.cpp Fri May 25 10:54:33 2018 +0200 +++ b/OrthancServer/ServerContext.cpp Fri May 25 11:25:33 2018 +0200 @@ -671,4 +671,19 @@ } } + + void ServerContext::AddChildInstances(SetOfInstancesJob& job, + const std::string& publicId) + { + std::list instances; + GetIndex().GetChildInstances(instances, publicId); + + job.Reserve(job.GetInstancesCount() + instances.size()); + + for (std::list::const_iterator + it = instances.begin(); it != instances.end(); ++it) + { + job.AddInstance(*it); + } + } } diff -r 5469dda691cd -r e09021ddc00d OrthancServer/ServerContext.h --- a/OrthancServer/ServerContext.h Fri May 25 10:54:33 2018 +0200 +++ b/OrthancServer/ServerContext.h Fri May 25 11:25:33 2018 +0200 @@ -44,6 +44,7 @@ #include "../Core/DicomParsing/ParsedDicomFile.h" #include "../Core/FileStorage/IStorageArea.h" #include "../Core/JobsEngine/JobsEngine.h" +#include "../Core/JobsEngine/SetOfInstancesJob.h" #include "../Core/MultiThreading/SharedMessageQueue.h" #include "../Core/RestApi/RestApiOutput.h" #include "../Plugins/Engine/OrthancPlugins.h" @@ -290,5 +291,8 @@ #endif bool HasPlugins() const; + + void AddChildInstances(SetOfInstancesJob& job, + const std::string& publicId); }; }