Mercurial > hg > orthanc
diff OrthancServer/Internals/StoreScp.cpp @ 1573:3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 25 Aug 2015 13:05:22 +0200 |
parents | f967bdf8534e |
children | de1413733c97 14a32b2fa63e |
line wrap: on
line diff
--- a/OrthancServer/Internals/StoreScp.cpp Tue Aug 25 12:10:12 2015 +0200 +++ b/OrthancServer/Internals/StoreScp.cpp Tue Aug 25 13:05:22 2015 +0200 @@ -102,6 +102,7 @@ struct StoreCallbackData { IStoreRequestHandler* handler; + const std::string* remoteIp; const char* remoteAET; const char* calledAET; const char* modality; @@ -202,7 +203,7 @@ { try { - cbdata->handler->Handle(buffer, summary, dicomJson, cbdata->remoteAET, cbdata->calledAET); + cbdata->handler->Handle(buffer, summary, dicomJson, *cbdata->remoteIp, cbdata->remoteAET, cbdata->calledAET); } catch (OrthancException& e) { @@ -237,7 +238,8 @@ OFCondition Internals::storeScp(T_ASC_Association * assoc, T_DIMSE_Message * msg, T_ASC_PresentationContextID presID, - IStoreRequestHandler& handler) + IStoreRequestHandler& handler, + const std::string& remoteIp) { OFCondition cond = EC_Normal; T_DIMSE_C_StoreRQ *req; @@ -246,23 +248,24 @@ req = &msg->msg.CStoreRQ; // intialize some variables - StoreCallbackData callbackData; - callbackData.handler = &handler; - callbackData.modality = dcmSOPClassUIDToModality(req->AffectedSOPClassUID/*, "UNKNOWN"*/); - if (callbackData.modality == NULL) - callbackData.modality = "UNKNOWN"; + StoreCallbackData data; + data.handler = &handler; + data.remoteIp = &remoteIp; + data.modality = dcmSOPClassUIDToModality(req->AffectedSOPClassUID/*, "UNKNOWN"*/); + if (data.modality == NULL) + data.modality = "UNKNOWN"; - callbackData.affectedSOPInstanceUID = req->AffectedSOPInstanceUID; - callbackData.messageID = req->MessageID; + data.affectedSOPInstanceUID = req->AffectedSOPInstanceUID; + data.messageID = req->MessageID; if (assoc && assoc->params) { - callbackData.remoteAET = assoc->params->DULparams.callingAPTitle; - callbackData.calledAET = assoc->params->DULparams.calledAPTitle; + data.remoteAET = assoc->params->DULparams.callingAPTitle; + data.calledAET = assoc->params->DULparams.calledAPTitle; } else { - callbackData.remoteAET = ""; - callbackData.calledAET = ""; + data.remoteAET = ""; + data.calledAET = ""; } DcmFileFormat dcmff; @@ -278,7 +281,7 @@ DcmDataset *dset = dcmff.getDataset(); cond = DIMSE_storeProvider(assoc, presID, req, NULL, /*opt_useMetaheader*/OFFalse, &dset, - storeScpCallback, &callbackData, + storeScpCallback, &data, /*opt_blockMode*/ DIMSE_BLOCKING, /*opt_dimse_timeout*/ 0);