Mercurial > hg > orthanc
diff Core/DicomNetworking/DicomControlUserConnection.cpp @ 3826:e82bd07c384e
putting DicomAssociation behind pimpl
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 10 Apr 2020 16:12:10 +0200 |
parents | 4570c57668a8 |
children | 3d1bb2193832 |
line wrap: on
line diff
--- a/Core/DicomNetworking/DicomControlUserConnection.cpp Fri Apr 10 16:04:54 2020 +0200 +++ b/Core/DicomNetworking/DicomControlUserConnection.cpp Fri Apr 10 16:12:10 2020 +0200 @@ -34,9 +34,10 @@ #include "../PrecompiledHeaders.h" #include "DicomControlUserConnection.h" +#include "../DicomParsing/FromDcmtkBridge.h" #include "../Logging.h" #include "../OrthancException.h" -#include "../DicomParsing/FromDcmtkBridge.h" +#include "DicomAssociation.h" #include <dcmtk/dcmdata/dcdeftag.h> #include <dcmtk/dcmnet/diutil.h> @@ -224,11 +225,11 @@ void DicomControlUserConnection::SetupPresentationContexts() { - association_.ProposeGenericPresentationContext(UID_VerificationSOPClass); - association_.ProposeGenericPresentationContext(UID_FINDPatientRootQueryRetrieveInformationModel); - association_.ProposeGenericPresentationContext(UID_FINDStudyRootQueryRetrieveInformationModel); - association_.ProposeGenericPresentationContext(UID_MOVEStudyRootQueryRetrieveInformationModel); - association_.ProposeGenericPresentationContext(UID_FINDModalityWorklistInformationModel); + association_->ProposeGenericPresentationContext(UID_VerificationSOPClass); + association_->ProposeGenericPresentationContext(UID_FINDPatientRootQueryRetrieveInformationModel); + association_->ProposeGenericPresentationContext(UID_FINDStudyRootQueryRetrieveInformationModel); + association_->ProposeGenericPresentationContext(UID_MOVEStudyRootQueryRetrieveInformationModel); + association_->ProposeGenericPresentationContext(UID_FINDModalityWorklistInformationModel); } @@ -240,7 +241,7 @@ { assert(isWorklist ^ (level != NULL)); - association_.Open(parameters_); + association_->Open(parameters_); FindPayload payload; payload.answers = &answers; @@ -249,7 +250,7 @@ // Figure out which of the accepted presentation contexts should be used int presID = ASC_findAcceptedPresentationContextID( - &association_.GetDcmtkAssociation(), sopClass); + &association_->GetDcmtkAssociation(), sopClass); if (presID == 0) { throw OrthancException(ErrorCode_DicomFindUnavailable, @@ -258,7 +259,7 @@ T_DIMSE_C_FindRQ request; memset(&request, 0, sizeof(request)); - request.MessageID = association_.GetDcmtkAssociation().nextMsgID++; + request.MessageID = association_->GetDcmtkAssociation().nextMsgID++; strncpy(request.AffectedSOPClassUID, sopClass, DIC_UI_LEN); request.Priority = DIMSE_PRIORITY_MEDIUM; request.DataSetType = DIMSE_DATASET_PRESENT; @@ -271,7 +272,7 @@ #endif OFCondition cond = DIMSE_findUser( - &association_.GetDcmtkAssociation(), presID, &request, dataset, + &association_->GetDcmtkAssociation(), presID, &request, dataset, #if DCMTK_VERSION_NUMBER >= 364 responseCount, #endif @@ -323,7 +324,7 @@ ResourceType level, const DicomMap& fields) { - association_.Open(parameters_); + association_->Open(parameters_); std::unique_ptr<ParsedDicomFile> query( ConvertQueryFields(fields, parameters_.GetRemoteManufacturer())); @@ -353,7 +354,7 @@ } // Figure out which of the accepted presentation contexts should be used - int presID = ASC_findAcceptedPresentationContextID(&association_.GetDcmtkAssociation(), sopClass); + int presID = ASC_findAcceptedPresentationContextID(&association_->GetDcmtkAssociation(), sopClass); if (presID == 0) { throw OrthancException(ErrorCode_DicomMoveUnavailable, @@ -362,7 +363,7 @@ T_DIMSE_C_MoveRQ request; memset(&request, 0, sizeof(request)); - request.MessageID = association_.GetDcmtkAssociation().nextMsgID++; + request.MessageID = association_->GetDcmtkAssociation().nextMsgID++; strncpy(request.AffectedSOPClassUID, sopClass, DIC_UI_LEN); request.Priority = DIMSE_PRIORITY_MEDIUM; request.DataSetType = DIMSE_DATASET_PRESENT; @@ -372,10 +373,10 @@ DcmDataset* statusDetail = NULL; DcmDataset* responseIdentifiers = NULL; OFCondition cond = DIMSE_moveUser( - &association_.GetDcmtkAssociation(), presID, &request, dataset, NULL, NULL, + &association_->GetDcmtkAssociation(), presID, &request, dataset, NULL, NULL, /*opt_blockMode*/ (parameters_.HasTimeout() ? DIMSE_NONBLOCKING : DIMSE_BLOCKING), /*opt_dimse_timeout*/ parameters_.GetTimeout(), - &association_.GetDcmtkNetwork(), NULL, NULL, + &association_->GetDcmtkNetwork(), NULL, NULL, &response, &statusDetail, &responseIdentifiers); if (statusDetail) @@ -422,7 +423,8 @@ DicomControlUserConnection::DicomControlUserConnection(const DicomAssociationParameters& params) : - parameters_(params) + parameters_(params), + association_(new DicomAssociation) { SetupPresentationContexts(); } @@ -430,12 +432,12 @@ bool DicomControlUserConnection::Echo() { - association_.Open(parameters_); + association_->Open(parameters_); DIC_US status; DicomAssociation::CheckCondition( - DIMSE_echoUser(&association_.GetDcmtkAssociation(), - association_.GetDcmtkAssociation().nextMsgID++, + DIMSE_echoUser(&association_->GetDcmtkAssociation(), + association_->GetDcmtkAssociation().nextMsgID++, /*opt_blockMode*/ (parameters_.HasTimeout() ? DIMSE_NONBLOCKING : DIMSE_BLOCKING), /*opt_dimse_timeout*/ parameters_.GetTimeout(), &status, NULL),