Mercurial > hg > orthanc
comparison OrthancServer/ServerJobs/DicomModalityStoreJob.cpp @ 3862:594263db316a transcoding
DicomModalityStoreJob now uses DicomStoreUserConnection
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 27 Apr 2020 17:28:55 +0200 |
parents | 138d0dde41b5 |
children | 09798f2b985f |
comparison
equal
deleted
inserted
replaced
3861:eb8280b30031 | 3862:594263db316a |
---|---|
33 | 33 |
34 #include "../PrecompiledHeadersServer.h" | 34 #include "../PrecompiledHeadersServer.h" |
35 #include "DicomModalityStoreJob.h" | 35 #include "DicomModalityStoreJob.h" |
36 | 36 |
37 #include "../../Core/Compatibility.h" | 37 #include "../../Core/Compatibility.h" |
38 #include "../../Core/DicomNetworking/DicomAssociation.h" | |
38 #include "../../Core/Logging.h" | 39 #include "../../Core/Logging.h" |
39 #include "../../Core/SerializationToolbox.h" | 40 #include "../../Core/SerializationToolbox.h" |
40 #include "../ServerContext.h" | 41 #include "../ServerContext.h" |
41 #include "../StorageCommitmentReports.h" | 42 #include "../StorageCommitmentReports.h" |
42 | 43 |
45 { | 46 { |
46 void DicomModalityStoreJob::OpenConnection() | 47 void DicomModalityStoreJob::OpenConnection() |
47 { | 48 { |
48 if (connection_.get() == NULL) | 49 if (connection_.get() == NULL) |
49 { | 50 { |
50 connection_.reset(new DicomUserConnection(localAet_, remote_)); | 51 connection_.reset(new DicomStoreUserConnection(localAet_, remote_)); |
51 } | 52 } |
52 } | 53 } |
53 | 54 |
54 | 55 |
55 bool DicomModalityStoreJob::HandleInstance(const std::string& instance) | 56 bool DicomModalityStoreJob::HandleInstance(const std::string& instance) |
72 return false; | 73 return false; |
73 } | 74 } |
74 | 75 |
75 std::string sopClassUid, sopInstanceUid; | 76 std::string sopClassUid, sopInstanceUid; |
76 | 77 |
78 const void* data = dicom.empty() ? NULL : dicom.c_str(); | |
79 | |
77 if (HasMoveOriginator()) | 80 if (HasMoveOriginator()) |
78 { | 81 { |
79 connection_->Store(sopClassUid, sopInstanceUid, dicom, moveOriginatorAet_, moveOriginatorId_); | 82 connection_->Store(sopClassUid, sopInstanceUid, data, dicom.size(), |
80 } | 83 moveOriginatorAet_, moveOriginatorId_); |
81 else | 84 } |
82 { | 85 else |
83 connection_->Store(sopClassUid, sopInstanceUid, dicom); | 86 { |
87 connection_->Store(sopClassUid, sopInstanceUid, data, dicom.size()); | |
84 } | 88 } |
85 | 89 |
86 if (storageCommitment_) | 90 if (storageCommitment_) |
87 { | 91 { |
88 sopClassUids_.push_back(sopClassUid); | 92 sopClassUids_.push_back(sopClassUid); |
94 throw OrthancException(ErrorCode_InternalError); | 98 throw OrthancException(ErrorCode_InternalError); |
95 } | 99 } |
96 | 100 |
97 if (sopClassUids_.size() == GetInstancesCount()) | 101 if (sopClassUids_.size() == GetInstancesCount()) |
98 { | 102 { |
103 assert(IsStarted()); | |
104 connection_.reset(NULL); | |
105 | |
99 const std::string& remoteAet = remote_.GetApplicationEntityTitle(); | 106 const std::string& remoteAet = remote_.GetApplicationEntityTitle(); |
100 | 107 |
101 LOG(INFO) << "Sending storage commitment request to modality: " << remoteAet; | 108 LOG(INFO) << "Sending storage commitment request to modality: " << remoteAet; |
102 | 109 |
103 // Create a "pending" storage commitment report BEFORE the | 110 // Create a "pending" storage commitment report BEFORE the |
104 // actual SCU call in order to avoid race conditions | 111 // actual SCU call in order to avoid race conditions |
105 context_.GetStorageCommitmentReports().Store( | 112 context_.GetStorageCommitmentReports().Store( |
106 transactionUid_, new StorageCommitmentReports::Report(remoteAet)); | 113 transactionUid_, new StorageCommitmentReports::Report(remoteAet)); |
107 | 114 |
108 assert(IsStarted()); | |
109 OpenConnection(); | |
110 | |
111 std::vector<std::string> a(sopClassUids_.begin(), sopClassUids_.end()); | 115 std::vector<std::string> a(sopClassUids_.begin(), sopClassUids_.end()); |
112 std::vector<std::string> b(sopInstanceUids_.begin(), sopInstanceUids_.end()); | 116 std::vector<std::string> b(sopInstanceUids_.begin(), sopInstanceUids_.end()); |
113 connection_->RequestStorageCommitment(transactionUid_, a, b); | 117 |
118 DicomAssociationParameters parameters(localAet_, remote_); | |
119 DicomAssociation::RequestStorageCommitment(parameters, transactionUid_, a, b); | |
114 } | 120 } |
115 } | 121 } |
116 | 122 |
117 //boost::this_thread::sleep(boost::posix_time::milliseconds(500)); | 123 //boost::this_thread::sleep(boost::posix_time::milliseconds(500)); |
118 | 124 |