comparison Core/DicomNetworking/Internals/CommandDispatcher.cpp @ 3706:bd34b6ac5c08 storage-commitment

timeouts in storage commitment SCU and SCP
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 27 Feb 2020 12:24:29 +0100
parents d8b214a46b91
children 56f2397f027a
comparison
equal deleted inserted replaced
3705:d8b214a46b91 3706:bd34b6ac5c08
889 return cond; 889 return cond;
890 } 890 }
891 891
892 892
893 static DcmDataset* ReadDataset(T_ASC_Association* assoc, 893 static DcmDataset* ReadDataset(T_ASC_Association* assoc,
894 const char* errorMessage) 894 const char* errorMessage,
895 int timeout)
895 { 896 {
896 DcmDataset *tmp = NULL; 897 DcmDataset *tmp = NULL;
897 T_ASC_PresentationContextID presIdData; 898 T_ASC_PresentationContextID presIdData;
898 899
899 OFCondition cond = DIMSE_receiveDataSetInMemory( 900 OFCondition cond = DIMSE_receiveDataSetInMemory(
900 assoc, /*opt_blockMode*/ DIMSE_BLOCKING, 901 assoc, (timeout ? DIMSE_NONBLOCKING : DIMSE_BLOCKING), timeout,
901 /*opt_dimse_timeout*/ 0, &presIdData, &tmp, NULL, NULL); 902 &presIdData, &tmp, NULL, NULL);
902 if (!cond.good() || 903 if (!cond.good() ||
903 tmp == NULL) 904 tmp == NULL)
904 { 905 {
905 throw OrthancException(ErrorCode_NetworkProtocol, errorMessage); 906 throw OrthancException(ErrorCode_NetworkProtocol, errorMessage);
906 } 907 }
1025 * J.3-1. Storage Commitment Request - Action Information": 1026 * J.3-1. Storage Commitment Request - Action Information":
1026 * http://dicom.nema.org/medical/dicom/2019a/output/chtml/part04/sect_J.3.2.html#table_J.3-1 1027 * http://dicom.nema.org/medical/dicom/2019a/output/chtml/part04/sect_J.3.2.html#table_J.3-1
1027 **/ 1028 **/
1028 1029
1029 std::auto_ptr<DcmDataset> dataset( 1030 std::auto_ptr<DcmDataset> dataset(
1030 ReadDataset(assoc_, "Cannot read the dataset in N-ACTION SCP")); 1031 ReadDataset(assoc_, "Cannot read the dataset in N-ACTION SCP", associationTimeout_));
1031 1032
1032 std::string transactionUid = ReadString(*dataset, DCM_TransactionUID); 1033 std::string transactionUid = ReadString(*dataset, DCM_TransactionUID);
1033 1034
1034 std::vector<std::string> sopClassUid, sopInstanceUid; 1035 std::vector<std::string> sopClassUid, sopInstanceUid;
1035 ReadSopSequence(sopClassUid, sopInstanceUid, 1036 ReadSopSequence(sopClassUid, sopInstanceUid,
1148 * J.3-2. Storage Commitment Result - Event Information": 1149 * J.3-2. Storage Commitment Result - Event Information":
1149 * http://dicom.nema.org/medical/dicom/2019a/output/chtml/part04/sect_J.3.3.html#table_J.3-2 1150 * http://dicom.nema.org/medical/dicom/2019a/output/chtml/part04/sect_J.3.3.html#table_J.3-2
1150 **/ 1151 **/
1151 1152
1152 std::auto_ptr<DcmDataset> dataset( 1153 std::auto_ptr<DcmDataset> dataset(
1153 ReadDataset(assoc_, "Cannot read the dataset in N-EVENT-REPORT SCP")); 1154 ReadDataset(assoc_, "Cannot read the dataset in N-EVENT-REPORT SCP", associationTimeout_));
1154 1155
1155 std::string transactionUid = ReadString(*dataset, DCM_TransactionUID); 1156 std::string transactionUid = ReadString(*dataset, DCM_TransactionUID);
1156 1157
1157 std::vector<std::string> successSopClassUid, successSopInstanceUid; 1158 std::vector<std::string> successSopClassUid, successSopInstanceUid;
1158 ReadSopSequence(successSopClassUid, successSopInstanceUid, 1159 ReadSopSequence(successSopClassUid, successSopInstanceUid,