DYT/Tool/3rdParty_x64/include/dcmtk/dcmqrdb/dcmqrcbg.h
2024-11-22 23:19:31 +08:00

169 lines
4.6 KiB
C++

/*
*
* Copyright (C) 1993-2011, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmqrdb
*
* Author: Marco Eichelberg
*
* Purpose: class DcmQueryRetrieveGetContext
*
*/
#ifndef DCMQRCBG_H
#define DCMQRCBG_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/dcmnet/dimse.h"
#include "dcmtk/dcmqrdb/qrdefine.h"
class DcmQueryRetrieveDatabaseHandle;
class DcmQueryRetrieveOptions;
class DcmQueryRetrieveDatabaseStatus;
/** this class maintains the context information that is passed to the
* callback function called by DIMSE_getProvider.
*/
class DCMTK_DCMQRDB_EXPORT DcmQueryRetrieveGetContext
{
public:
/** constructor
* @param handle reference to database handle
* @param options options for the Q/R service
* @param priorstatus prior DIMSE status
* @param origassoc pointer to DIMSE association
* @param origmsgid DIMSE message ID
* @param prior DIMSE priority
* @param origpresid presentation context ID
*/
DcmQueryRetrieveGetContext(DcmQueryRetrieveDatabaseHandle& handle,
const DcmQueryRetrieveOptions& options,
DIC_US priorstatus,
T_ASC_Association *origassoc,
DIC_US origmsgid,
T_DIMSE_Priority prior,
T_ASC_PresentationContextID origpresid)
: dbHandle(handle)
, options_(options)
, priorStatus(priorstatus)
, origAssoc(origassoc)
, assocStarted(OFFalse)
, origPresId(origpresid)
, origMsgId(origmsgid)
, origAETitle()
// , origHostName()
, priority(prior)
, ourAETitle()
, failedUIDs(NULL)
, nRemaining(0)
, nCompleted(0)
, nFailed(0)
, nWarning(0)
, getCancelled(OFFalse)
{
origHostName[0] = '\0';
}
/** set the AEtitle under which this application operates
* @param ae AEtitle, is copied into this object.
*/
void setOurAETitle(const char *ae)
{
if (ae) ourAETitle = ae; else ourAETitle.clear();
}
/** callback handler called by the DIMSE_storeProvider callback function.
* @param cancelled (in) flag indicating whether a C-CANCEL was received
* @param request original get request (in)
* @param requestIdentifiers original get request identifiers (in)
* @param responseCount get response count (in)
* @param response get response (out)
* @param stDetail status detail for get response (out)
* @param responseIdentifiers get response identifiers (out)
*/
void callbackHandler(
/* in */
OFBool cancelled, T_DIMSE_C_GetRQ *request,
DcmDataset *requestIdentifiers, int responseCount,
/* out */
T_DIMSE_C_GetRSP *response, DcmDataset **stDetail,
DcmDataset **responseIdentifiers);
private:
/// private undefined copy constructor
DcmQueryRetrieveGetContext(const DcmQueryRetrieveGetContext& other);
/// private undefined assignment operator
DcmQueryRetrieveGetContext& operator=(const DcmQueryRetrieveGetContext& other);
void addFailedUIDInstance(const char *sopInstance);
OFCondition performGetSubOp(DIC_UI sopClass, DIC_UI sopInstance, char *fname);
void getNextImage(DcmQueryRetrieveDatabaseStatus * dbStatus);
void buildFailedInstanceList(DcmDataset ** rspIds);
/// reference to database handle
DcmQueryRetrieveDatabaseHandle& dbHandle;
/// reference to Q/R service options
const DcmQueryRetrieveOptions& options_;
/// prior DIMSE status
DIC_US priorStatus;
/// pointer to association on which the C-GET-RQ was received
T_ASC_Association *origAssoc;
/// true if the association was started
OFBool assocStarted;
/// presentation context id of request
T_ASC_PresentationContextID origPresId;
/// message id of request
DIC_US origMsgId;
/// title of requestor
OFString origAETitle;
/// hostname of requestor
DIC_NODENAME origHostName;
/// priority of request
T_DIMSE_Priority priority;
/// our current title
OFString ourAETitle;
/// instance UIDs of failed store sub-ops
char *failedUIDs;
/// number of remaining sub-operations
DIC_US nRemaining;
/// number of completed sub-operations
DIC_US nCompleted;
/// number of failed sub-operations
DIC_US nFailed;
/// number of completed sub-operations that causes warnings
DIC_US nWarning;
/// true if the get sub-operations have been cancelled
OFBool getCancelled;
};
#endif