00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef DCMQRCBM_H
00030 #define DCMQRCBM_H
00031
00032 #include "dcmtk/config/osconfig.h"
00033 #include "dcmtk/dcmnet/dimse.h"
00034
00035 class DcmQueryRetrieveDatabaseHandle;
00036 class DcmQueryRetrieveOptions;
00037 class DcmQueryRetrieveConfig;
00038 class DcmQueryRetrieveDatabaseStatus;
00039
00043 class DcmQueryRetrieveMoveContext
00044 {
00045 public:
00055 DcmQueryRetrieveMoveContext(
00056 DcmQueryRetrieveDatabaseHandle& handle,
00057 const DcmQueryRetrieveOptions& options,
00058 const DcmQueryRetrieveConfig *cfg,
00059 DIC_US priorstatus,
00060 T_ASC_Association *assoc,
00061 DIC_US msgid,
00062 T_DIMSE_Priority pr)
00063 : dbHandle(handle)
00064 , options_(options)
00065 , priorStatus(priorstatus)
00066 , origAssoc(assoc)
00067 , subAssoc(NULL)
00068 , config(cfg)
00069 , assocStarted(OFFalse)
00070 , origMsgId(msgid)
00071
00072
00073 , priority(pr)
00074 , ourAETitle()
00075
00076 , failedUIDs(NULL)
00077 , nRemaining(0)
00078 , nCompleted(0)
00079 , nFailed(0)
00080 , nWarning(0)
00081 {
00082 origAETitle[0] = '\0';
00083 origHostName[0] = '\0';
00084 dstAETitle[0] = '\0';
00085 }
00086
00096 void callbackHandler(
00097
00098 OFBool cancelled, T_DIMSE_C_MoveRQ *request,
00099 DcmDataset *requestIdentifiers, int responseCount,
00100
00101 T_DIMSE_C_MoveRSP *response, DcmDataset **stDetail,
00102 DcmDataset **responseIdentifiers);
00103
00107 void setOurAETitle(const char *ae)
00108 {
00109 if (ae) ourAETitle = ae; else ourAETitle.clear();
00110 }
00111
00112 private:
00113
00114 void addFailedUIDInstance(const char *sopInstance);
00115 OFCondition performMoveSubOp(DIC_UI sopClass, DIC_UI sopInstance, char *fname);
00116 OFCondition buildSubAssociation(T_DIMSE_C_MoveRQ *request);
00117 OFCondition closeSubAssociation();
00118 void moveNextImage(DcmQueryRetrieveDatabaseStatus * dbStatus);
00119 void failAllSubOperations(DcmQueryRetrieveDatabaseStatus * dbStatus);
00120 void buildFailedInstanceList(DcmDataset ** rspIds);
00121 OFBool mapMoveDestination(
00122 const char *origPeer, const char *origAE,
00123 const char *dstAE, char *dstPeer, int *dstPort);
00124 OFCondition addAllStoragePresentationContexts(T_ASC_Parameters *params);
00125
00127 DcmQueryRetrieveDatabaseHandle& dbHandle;
00128
00130 const DcmQueryRetrieveOptions& options_;
00131
00133 DIC_US priorStatus;
00134
00136 T_ASC_Association *origAssoc;
00137
00139 T_ASC_Association *subAssoc;
00140
00142 const DcmQueryRetrieveConfig *config;
00143
00145 OFBool assocStarted;
00146
00148 DIC_US origMsgId;
00149
00151 DIC_AE origAETitle;
00152
00154 DIC_NODENAME origHostName;
00155
00157 T_DIMSE_Priority priority;
00158
00160 OFString ourAETitle;
00161
00163 DIC_AE dstAETitle;
00164
00166 char *failedUIDs;
00167
00169 DIC_US nRemaining;
00170
00172 DIC_US nCompleted;
00173
00175 DIC_US nFailed;
00176
00178 DIC_US nWarning;
00179
00180 };
00181
00182 #endif
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216