# HG changeset patch # User Sebastien Jodogne # Date 1588600838 -7200 # Node ID 4b4f387c6bb832366d47b4ce19fbcc4b91ac2875 # Parent 92ecaf877baf8613f93530e1946b563f0488a587 making DicomMoveScuJob more consistent with DicomModalityStoreJob diff -r 92ecaf877baf -r 4b4f387c6bb8 OrthancServer/ServerJobs/DicomMoveScuJob.cpp --- a/OrthancServer/ServerJobs/DicomMoveScuJob.cpp Mon May 04 15:37:45 2020 +0200 +++ b/OrthancServer/ServerJobs/DicomMoveScuJob.cpp Mon May 04 16:00:38 2020 +0200 @@ -97,14 +97,7 @@ { if (connection_.get() == NULL) { - DicomAssociationParameters params(localAet_, remote_); - - if (timeout_ >= 0) - { - params.SetTimeout(static_cast(timeout_)); - } - - connection_.reset(new DicomControlUserConnection(params)); + connection_.reset(new DicomControlUserConnection(parameters_)); } connection_->Move(targetAet_, findAnswer); @@ -160,7 +153,7 @@ } else { - localAet_ = aet; + parameters_.SetLocalApplicationEntityTitle(aet); } } @@ -186,7 +179,20 @@ } else { - remote_ = remote; + parameters_.SetRemoteModality(remote); + } + } + + + void DicomMoveScuJob::SetTimeout(uint32_t seconds) + { + if (IsStarted()) + { + throw OrthancException(ErrorCode_BadSequenceOfCalls); + } + else + { + parameters_.SetTimeout(seconds); } } @@ -200,9 +206,9 @@ void DicomMoveScuJob::GetPublicContent(Json::Value& value) { SetOfCommandsJob::GetPublicContent(value); - - value["LocalAet"] = localAet_; - value["RemoteAet"] = remote_.GetApplicationEntityTitle(); + + value["LocalAet"] = parameters_.GetLocalApplicationEntityTitle(); + value["RemoteAet"] = parameters_.GetRemoteModality().GetApplicationEntityTitle(); value["Query"] = query_; } @@ -213,18 +219,14 @@ context_(context), query_(Json::arrayValue) { - localAet_ = SerializationToolbox::ReadString(serialized, LOCAL_AET); + parameters_ = DicomAssociationParameters::UnserializeJob(serialized); targetAet_ = SerializationToolbox::ReadString(serialized, TARGET_AET); - remote_ = RemoteModalityParameters(serialized[REMOTE]); if (serialized.isMember(QUERY) && serialized[QUERY].type() == Json::arrayValue) { query_ = serialized[QUERY]; } - - // New in Orthanc in 1.7.0 - timeout_ = SerializationToolbox::ReadInteger(serialized, TIMEOUT, -1); } @@ -236,11 +238,9 @@ } else { - target[LOCAL_AET] = localAet_; + parameters_.SerializeJob(target); target[TARGET_AET] = targetAet_; target[QUERY] = query_; - target[TIMEOUT] = timeout_; - remote_.Serialize(target[REMOTE], true /* force advanced format */); return true; } } diff -r 92ecaf877baf -r 4b4f387c6bb8 OrthancServer/ServerJobs/DicomMoveScuJob.h --- a/OrthancServer/ServerJobs/DicomMoveScuJob.h Mon May 04 15:37:45 2020 +0200 +++ b/OrthancServer/ServerJobs/DicomMoveScuJob.h Mon May 04 16:00:38 2020 +0200 @@ -49,12 +49,10 @@ class Command; class Unserializer; - ServerContext& context_; - std::string localAet_; - std::string targetAet_; - RemoteModalityParameters remote_; - int timeout_; - Json::Value query_; + ServerContext& context_; + DicomAssociationParameters parameters_; + std::string targetAet_; + Json::Value query_; std::unique_ptr connection_; @@ -74,39 +72,25 @@ void AddFindAnswer(QueryRetrieveHandler& query, size_t i); - - const std::string& GetLocalAet() const + + const DicomAssociationParameters& GetParameters() const { - return localAet_; + return parameters_; } + + void SetLocalAet(const std::string& aet); - void SetLocalAet(const std::string& aet); + void SetRemoteModality(const RemoteModalityParameters& remote); + + void SetTimeout(uint32_t timeout); const std::string& GetTargetAet() const { return targetAet_; } - + void SetTargetAet(const std::string& aet); - const RemoteModalityParameters& GetRemoteModality() const - { - return remote_; - } - - void SetRemoteModality(const RemoteModalityParameters& remote); - - void SetTimeout(int timeout) - { - timeout_ = timeout; - } - - int GetTimeout() const - { - return timeout_; - } - - virtual void Stop(JobStopReason reason); virtual void GetJobType(std::string& target)