# HG changeset patch # User Sebastien Jodogne # Date 1604503679 -3600 # Node ID 544120b34c093288d295218abcc03ba7aa29e5f1 # Parent 756126cd22193c0310a39bd8ecb42aeac6b91d19 fix for VS2008, debug logs for C-FIND SCP and for storage commitment SCP diff -r 756126cd2219 -r 544120b34c09 OrthancFramework/Sources/DicomNetworking/DicomAssociation.cpp --- a/OrthancFramework/Sources/DicomNetworking/DicomAssociation.cpp Wed Nov 04 15:01:47 2020 +0100 +++ b/OrthancFramework/Sources/DicomNetworking/DicomAssociation.cpp Wed Nov 04 16:27:59 2020 +0100 @@ -674,10 +674,13 @@ } { + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(dataset); + OFString str; CLOG(TRACE, DICOM) << "Sending Storage Commitment Report:" << std::endl << DIMSE_dumpMessage(str, message, DIMSE_OUTGOING) << std::endl - << DcmObject::PrintHelper(dataset); + << s.str(); } if (!DIMSE_sendMessageUsingMemoryData( @@ -834,10 +837,13 @@ } { + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(dataset); + OFString str; CLOG(TRACE, DICOM) << "Sending Storage Commitment Request:" << std::endl << DIMSE_dumpMessage(str, message, DIMSE_OUTGOING) << std::endl - << DcmObject::PrintHelper(dataset); + << s.str(); } if (!DIMSE_sendMessageUsingMemoryData( diff -r 756126cd2219 -r 544120b34c09 OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp --- a/OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp Wed Nov 04 15:01:47 2020 +0100 +++ b/OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp Wed Nov 04 16:27:59 2020 +0100 @@ -79,8 +79,9 @@ if (responseIdentifiers != NULL) { - CLOG(TRACE, DICOM) << "Response Identifiers " << responseCount << ":" << std::endl - << DcmObject::PrintHelper(*responseIdentifiers); + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(*responseIdentifiers); + CLOG(TRACE, DICOM) << "Response Identifiers " << responseCount << ":" << std::endl << s.str(); } if (responseIdentifiers != NULL) @@ -282,10 +283,13 @@ #endif { + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(*dataset); + OFString str; CLOG(TRACE, DICOM) << "Sending Find Request:" << std::endl << DIMSE_dumpMessage(str, request, DIMSE_OUTGOING, NULL, presID) << std::endl - << DcmObject::PrintHelper(*dataset); + << s.str(); } OFCondition cond = DIMSE_findUser( diff -r 756126cd2219 -r 544120b34c09 OrthancFramework/Sources/DicomNetworking/Internals/CommandDispatcher.cpp --- a/OrthancFramework/Sources/DicomNetworking/Internals/CommandDispatcher.cpp Wed Nov 04 15:01:47 2020 +0100 +++ b/OrthancFramework/Sources/DicomNetworking/Internals/CommandDispatcher.cpp Wed Nov 04 16:27:59 2020 +0100 @@ -748,7 +748,10 @@ // detail information, dump this information if (statusDetail != NULL) { - //LOG4CPP_WARN(Internals::GetLogger(), "Status Detail:" << OFendl << DcmObject::PrintHelper(*statusDetail)); + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(*statusDetail); + CLOG(TRACE, DICOM) << "Status Detail:" << std::endl << s.str(); + delete statusDetail; } @@ -1137,7 +1140,14 @@ std::unique_ptr dataset( ReadDataset(assoc_, "Cannot read the dataset in N-ACTION SCP", associationTimeout_)); + assert(dataset.get() != NULL); + { + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(*dataset); + CLOG(TRACE, DICOM) << "Received Storage Commitment Request:" << std::endl << s.str(); + } + std::string transactionUid = ReadString(*dataset, DCM_TransactionUID); std::vector sopClassUid, sopInstanceUid; @@ -1200,6 +1210,12 @@ content.DataSetType = DIMSE_DATASET_NULL; // Dataset is absent in storage commitment response content.opts = O_NACTION_AFFECTEDSOPCLASSUID | O_NACTION_AFFECTEDSOPINSTANCEUID; + { + OFString str; + CLOG(TRACE, DICOM) << "Sending Storage Commitment Request Response:" << std::endl + << DIMSE_dumpMessage(str, response, DIMSE_OUTGOING); + } + return DIMSE_sendMessageUsingMemoryData( assoc_, presID, &response, NULL /* no dataset */, NULL /* dataObject */, NULL /* callback */, NULL /* callback context */, NULL /* commandSet */); @@ -1260,7 +1276,14 @@ std::unique_ptr dataset( ReadDataset(assoc_, "Cannot read the dataset in N-EVENT-REPORT SCP", associationTimeout_)); + assert(dataset.get() != NULL); + { + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(*dataset); + CLOG(TRACE, DICOM) << "Received Storage Commitment Report:" << std::endl << s.str(); + } + std::string transactionUid = ReadString(*dataset, DCM_TransactionUID); std::vector successSopClassUid, successSopInstanceUid; @@ -1340,6 +1363,12 @@ content.DataSetType = DIMSE_DATASET_NULL; // Dataset is absent in storage commitment response content.opts = O_NEVENTREPORT_AFFECTEDSOPCLASSUID | O_NEVENTREPORT_AFFECTEDSOPINSTANCEUID; + { + OFString str; + CLOG(TRACE, DICOM) << "Sending Storage Commitment Report Response:" << std::endl + << DIMSE_dumpMessage(str, response, DIMSE_OUTGOING); + } + return DIMSE_sendMessageUsingMemoryData( assoc_, presID, &response, NULL /* no dataset */, NULL /* dataObject */, NULL /* callback */, NULL /* callback context */, NULL /* commandSet */); diff -r 756126cd2219 -r 544120b34c09 OrthancFramework/Sources/DicomNetworking/Internals/FindScp.cpp --- a/OrthancFramework/Sources/DicomNetworking/Internals/FindScp.cpp Wed Nov 04 15:01:47 2020 +0100 +++ b/OrthancFramework/Sources/DicomNetworking/Internals/FindScp.cpp Wed Nov 04 16:27:59 2020 +0100 @@ -200,6 +200,8 @@ DcmDataset **responseIdentifiers, DcmDataset **statusDetail) { + assert(requestIdentifiers != NULL); + bzero(response, sizeof(T_DIMSE_C_FindRSP)); *statusDetail = NULL; @@ -208,6 +210,12 @@ FindScpData& data = *reinterpret_cast(callbackData); if (data.lastRequest_ == NULL) { + { + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(*requestIdentifiers); + CLOG(TRACE, DICOM) << "Received C-FIND Request:" << std::endl << s.str(); + } + bool ok = false; try @@ -333,6 +341,21 @@ response->DimseStatus = STATUS_FIND_Cancel_MatchingTerminatedDueToCancelRequest; *responseIdentifiers = NULL; } + + { + OFString str; + CLOG(TRACE, DICOM) << "Sending C-FIND Response:" << std::endl + << DIMSE_dumpMessage(str, *response, DIMSE_OUTGOING); + } + + if (*responseIdentifiers) + { + std::stringstream s; // This is necessary for VS2008 + s << DcmObject::PrintHelper(**responseIdentifiers); + CLOG(TRACE, DICOM) << "C-FIND Response Content " + << responseCount << "/" << data.answers_.GetSize() << ":" << std::endl + << s.str(); + } } }