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);