# HG changeset patch # User Sebastien Jodogne # Date 1586525042 -7200 # Node ID 6762506ef4fb68d650aa5abee9db3e490eb2c107 # Parent 897ca31032534a47310a3b01efa9241bf2e9f155 reorganization of CheckCondition() diff -r 897ca3103253 -r 6762506ef4fb UnitTestsSources/FromDcmtkTests.cpp --- a/UnitTestsSources/FromDcmtkTests.cpp Fri Apr 10 14:39:20 2020 +0200 +++ b/UnitTestsSources/FromDcmtkTests.cpp Fri Apr 10 15:24:02 2020 +0200 @@ -2581,54 +2581,6 @@ defaultTimeout_ = seconds; } } - - void CheckCondition(const OFCondition& cond, - const std::string& command) const - { - if (cond.bad()) - { - // Reformat the error message from DCMTK by turning multiline - // errors into a single line - - std::string s(cond.text()); - std::string info; - info.reserve(s.size()); - - bool isMultiline = false; - for (size_t i = 0; i < s.size(); i++) - { - if (s[i] == '\r') - { - // Ignore - } - else if (s[i] == '\n') - { - if (isMultiline) - { - info += "; "; - } - else - { - info += " ("; - isMultiline = true; - } - } - else - { - info.push_back(s[i]); - } - } - - if (isMultiline) - { - info += ")"; - } - - throw OrthancException(ErrorCode_NetworkProtocol, - "DicomUserConnection - " + command + " to AET \"" + - GetRemoteApplicationEntityTitle() + "\": " + info); - } - } }; @@ -2711,7 +2663,7 @@ { try { - parameters.CheckCondition(cond, "connecting"); + CheckCondition(cond, parameters, "connecting"); } catch (OrthancException&) { @@ -3074,6 +3026,56 @@ } } + static void CheckCondition(const OFCondition& cond, + const DicomAssociationParameters& parameters, + const std::string& command) + { + if (cond.bad()) + { + // Reformat the error message from DCMTK by turning multiline + // errors into a single line + + std::string s(cond.text()); + std::string info; + info.reserve(s.size()); + + bool isMultiline = false; + for (size_t i = 0; i < s.size(); i++) + { + if (s[i] == '\r') + { + // Ignore + } + else if (s[i] == '\n') + { + if (isMultiline) + { + info += "; "; + } + else + { + info += " ("; + isMultiline = true; + } + } + else + { + info.push_back(s[i]); + } + } + + if (isMultiline) + { + info += ")"; + } + + throw OrthancException(ErrorCode_NetworkProtocol, + "DicomUserConnection - " + command + " to AET \"" + + parameters.GetRemoteApplicationEntityTitle() + + "\": " + info); + } + } + static void ReportStorageCommitment(const DicomAssociationParameters& parameters, const std::string& transactionUid, @@ -3656,7 +3658,7 @@ delete statusDetail; } - parameters_.CheckCondition(cond, "C-FIND"); + DicomAssociation::CheckCondition(cond, parameters_, "C-FIND"); /** @@ -3758,7 +3760,7 @@ delete responseIdentifiers; } - parameters_.CheckCondition(cond, "C-MOVE"); + DicomAssociation::CheckCondition(cond, parameters_, "C-MOVE"); /** @@ -3807,13 +3809,13 @@ association_.Open(parameters_); DIC_US status; - parameters_.CheckCondition( + DicomAssociation::CheckCondition( DIMSE_echoUser(&association_.GetDcmtkAssociation(), association_.GetDcmtkAssociation().nextMsgID++, /*opt_blockMode*/ (parameters_.HasTimeout() ? DIMSE_NONBLOCKING : DIMSE_BLOCKING), /*opt_dimse_timeout*/ parameters_.GetTimeout(), &status, NULL), - "C-ECHO"); + parameters_, "C-ECHO"); return status == STATUS_Success; }