Mercurial > hg > orthanc
comparison OrthancServer/Internals/FindScp.cpp @ 1799:4f01c9d73f02 worklists
calledAet made available to all the handlers
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 20 Nov 2015 12:57:14 +0100 |
parents | bdcc1dba4a53 |
children | 30e97a1f4093 |
comparison
equal
deleted
inserted
replaced
1798:e92cd8841a5f | 1799:4f01c9d73f02 |
---|---|
99 IWorklistRequestHandler* worklistHandler_; | 99 IWorklistRequestHandler* worklistHandler_; |
100 DicomFindAnswers answers_; | 100 DicomFindAnswers answers_; |
101 DcmDataset* lastRequest_; | 101 DcmDataset* lastRequest_; |
102 const std::string* remoteIp_; | 102 const std::string* remoteIp_; |
103 const std::string* remoteAet_; | 103 const std::string* remoteAet_; |
104 const std::string* calledAet_; | |
104 bool noCroppingOfResults_; | 105 bool noCroppingOfResults_; |
105 }; | 106 }; |
106 | 107 |
107 | 108 |
108 void FindScpCallback( | 109 void FindScpCallback( |
133 { | 134 { |
134 if (data.worklistHandler_ != NULL) | 135 if (data.worklistHandler_ != NULL) |
135 { | 136 { |
136 ParsedDicomFile query(*requestIdentifiers); | 137 ParsedDicomFile query(*requestIdentifiers); |
137 data.noCroppingOfResults_ = data.worklistHandler_->Handle(data.answers_, query, | 138 data.noCroppingOfResults_ = data.worklistHandler_->Handle(data.answers_, query, |
138 *data.remoteIp_, *data.remoteAet_); | 139 *data.remoteIp_, *data.remoteAet_, |
140 *data.calledAet_); | |
139 ok = true; | 141 ok = true; |
140 } | 142 } |
141 else | 143 else |
142 { | 144 { |
143 LOG(ERROR) << "No worklist handler is installed, cannot handle this C-FIND request"; | 145 LOG(ERROR) << "No worklist handler is installed, cannot handle this C-FIND request"; |
148 if (data.findHandler_ != NULL) | 150 if (data.findHandler_ != NULL) |
149 { | 151 { |
150 DicomMap input; | 152 DicomMap input; |
151 FromDcmtkBridge::Convert(input, *requestIdentifiers); | 153 FromDcmtkBridge::Convert(input, *requestIdentifiers); |
152 data.noCroppingOfResults_ = data.findHandler_->Handle(data.answers_, input, | 154 data.noCroppingOfResults_ = data.findHandler_->Handle(data.answers_, input, |
153 *data.remoteIp_, *data.remoteAet_); | 155 *data.remoteIp_, *data.remoteAet_, |
156 *data.calledAet_); | |
154 ok = true; | 157 ok = true; |
155 } | 158 } |
156 else | 159 else |
157 { | 160 { |
158 LOG(ERROR) << "No C-Find handler is installed, cannot handle this request"; | 161 LOG(ERROR) << "No C-Find handler is installed, cannot handle this request"; |
209 T_DIMSE_Message * msg, | 212 T_DIMSE_Message * msg, |
210 T_ASC_PresentationContextID presID, | 213 T_ASC_PresentationContextID presID, |
211 IFindRequestHandler* findHandler, | 214 IFindRequestHandler* findHandler, |
212 IWorklistRequestHandler* worklistHandler, | 215 IWorklistRequestHandler* worklistHandler, |
213 const std::string& remoteIp, | 216 const std::string& remoteIp, |
214 const std::string& remoteAet) | 217 const std::string& remoteAet, |
218 const std::string& calledAet) | |
215 { | 219 { |
216 FindScpData data; | 220 FindScpData data; |
217 data.lastRequest_ = NULL; | 221 data.lastRequest_ = NULL; |
218 data.findHandler_ = findHandler; | 222 data.findHandler_ = findHandler; |
219 data.worklistHandler_ = worklistHandler; | 223 data.worklistHandler_ = worklistHandler; |
220 data.remoteIp_ = &remoteIp; | 224 data.remoteIp_ = &remoteIp; |
221 data.remoteAet_ = &remoteAet; | 225 data.remoteAet_ = &remoteAet; |
226 data.calledAet_ = &calledAet; | |
222 data.noCroppingOfResults_ = true; | 227 data.noCroppingOfResults_ = true; |
223 | 228 |
224 OFCondition cond = DIMSE_findProvider(assoc, presID, &msg->msg.CFindRQ, | 229 OFCondition cond = DIMSE_findProvider(assoc, presID, &msg->msg.CFindRQ, |
225 FindScpCallback, &data, | 230 FindScpCallback, &data, |
226 /*opt_blockMode*/ DIMSE_BLOCKING, | 231 /*opt_blockMode*/ DIMSE_BLOCKING, |