Mercurial > hg > orthanc
diff OrthancServer/OrthancMoveRequestHandler.cpp @ 3160:fc9a4a2dad63
merge
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Thu, 24 Jan 2019 10:55:19 +0100 |
parents | 8a9eb767280c |
children | 8ea7c4546c3a |
line wrap: on
line diff
--- a/OrthancServer/OrthancMoveRequestHandler.cpp Thu Jan 24 10:54:47 2019 +0100 +++ b/OrthancServer/OrthancMoveRequestHandler.cpp Thu Jan 24 10:55:19 2019 +0100 @@ -34,12 +34,14 @@ #include "PrecompiledHeadersServer.h" #include "OrthancMoveRequestHandler.h" -#include "OrthancConfiguration.h" #include "../../Core/DicomParsing/FromDcmtkBridge.h" #include "../Core/DicomFormat/DicomArray.h" #include "../Core/Logging.h" +#include "OrthancConfiguration.h" +#include "ServerContext.h" #include "ServerJobs/DicomModalityStoreJob.h" + namespace Orthanc { namespace @@ -123,6 +125,7 @@ ServerContext& context_; std::auto_ptr<DicomModalityStoreJob> job_; size_t position_; + size_t countInstances_; public: AsynchronousMove(ServerContext& context, @@ -154,6 +157,8 @@ std::list<std::string> tmp; context_.GetIndex().GetChildInstances(tmp, publicId); + countInstances_ = tmp.size(); + job_->Reserve(tmp.size()); for (std::list<std::string>::iterator it = tmp.begin(); it != tmp.end(); ++it) @@ -164,20 +169,23 @@ virtual unsigned int GetSubOperationCount() const { - return 1; + return countInstances_; } virtual Status DoNext() { + if (position_ >= countInstances_) + { + return Status_Failure; + } + if (position_ == 0) { context_.GetJobsEngine().GetRegistry().Submit(job_.release(), 0 /* priority */); - return Status_Success; } - else - { - return Status_Failure; - } + + position_ ++; + return Status_Success; } }; } @@ -226,7 +234,7 @@ const std::string& content = value.GetContent(); - std::list<std::string> ids; + std::vector<std::string> ids; context_.GetIndex().LookupIdentifierExact(ids, level, tag, content); if (ids.size() != 1) @@ -235,7 +243,7 @@ } else { - publicId = ids.front(); + publicId = ids[0]; return true; } }