Mercurial > hg > orthanc
comparison OrthancServer/ServerJobs/Operations/StoreScuOperation.cpp @ 3857:67f988f42cef transcoding
integration mainline->transcoding
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 21 Apr 2020 16:33:59 +0200 |
parents | 6498739a3c3c |
children | 9973d10bc5c4 |
comparison
equal
deleted
inserted
replaced
3848:44bfcfdf42e8 | 3857:67f988f42cef |
---|---|
41 #include "../../../Core/SerializationToolbox.h" | 41 #include "../../../Core/SerializationToolbox.h" |
42 | 42 |
43 namespace Orthanc | 43 namespace Orthanc |
44 { | 44 { |
45 void StoreScuOperation::Apply(JobOperationValues& outputs, | 45 void StoreScuOperation::Apply(JobOperationValues& outputs, |
46 const JobOperationValue& input, | 46 const JobOperationValue& input) |
47 IDicomConnectionManager& connectionManager) | |
48 { | 47 { |
49 std::unique_ptr<IDicomConnectionManager::IResource> resource | 48 TimeoutDicomConnectionManager::Lock lock(connectionManager_, localAet_, modality_); |
50 (connectionManager.AcquireConnection(localAet_, modality_)); | 49 |
51 | |
52 if (resource.get() == NULL) | |
53 { | |
54 LOG(ERROR) << "Lua: Cannot connect to modality: " << modality_.GetApplicationEntityTitle(); | |
55 return; | |
56 } | |
57 | |
58 if (input.GetType() != JobOperationValue::Type_DicomInstance) | 50 if (input.GetType() != JobOperationValue::Type_DicomInstance) |
59 { | 51 { |
60 throw OrthancException(ErrorCode_BadParameterType); | 52 throw OrthancException(ErrorCode_BadParameterType); |
61 } | 53 } |
62 | 54 |
70 { | 62 { |
71 std::string dicom; | 63 std::string dicom; |
72 instance.ReadDicom(dicom); | 64 instance.ReadDicom(dicom); |
73 | 65 |
74 std::string sopClassUid, sopInstanceUid; // Unused | 66 std::string sopClassUid, sopInstanceUid; // Unused |
75 resource->GetConnection().Store(sopClassUid, sopInstanceUid, dicom); | 67 lock.GetConnection().Store(sopClassUid, sopInstanceUid, dicom); |
76 } | 68 } |
77 catch (OrthancException& e) | 69 catch (OrthancException& e) |
78 { | 70 { |
79 LOG(ERROR) << "Lua: Unable to send instance " << instance.GetId() << " to modality \"" | 71 LOG(ERROR) << "Lua: Unable to send instance " << instance.GetId() << " to modality \"" |
80 << modality_.GetApplicationEntityTitle() << "\": " << e.What(); | 72 << modality_.GetApplicationEntityTitle() << "\": " << e.What(); |
91 result["LocalAET"] = localAet_; | 83 result["LocalAET"] = localAet_; |
92 modality_.Serialize(result["Modality"], true /* force advanced format */); | 84 modality_.Serialize(result["Modality"], true /* force advanced format */); |
93 } | 85 } |
94 | 86 |
95 | 87 |
96 StoreScuOperation::StoreScuOperation(const Json::Value& serialized) | 88 StoreScuOperation::StoreScuOperation(TimeoutDicomConnectionManager& connectionManager, |
89 const Json::Value& serialized) : | |
90 connectionManager_(connectionManager) | |
97 { | 91 { |
98 if (SerializationToolbox::ReadString(serialized, "Type") != "StoreScu" || | 92 if (SerializationToolbox::ReadString(serialized, "Type") != "StoreScu" || |
99 !serialized.isMember("LocalAET")) | 93 !serialized.isMember("LocalAET")) |
100 { | 94 { |
101 throw OrthancException(ErrorCode_BadFileFormat); | 95 throw OrthancException(ErrorCode_BadFileFormat); |