Mercurial > hg > orthanc
comparison OrthancServer/Internals/CommandDispatcher.cpp @ 661:d233b5090105
accept more transfer syntaxes for C-Store SCP, write meta-header when receiving files
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 05 Nov 2013 17:41:25 +0100 |
parents | 4aa6f0d79947 |
children | 41b3e5ccb291 |
comparison
equal
deleted
inserted
replaced
660:f0232774b913 | 661:d233b5090105 |
---|---|
238 if (server.HasMoveRequestHandlerFactory()) | 238 if (server.HasMoveRequestHandlerFactory()) |
239 { | 239 { |
240 knownAbstractSyntaxes.push_back(UID_MOVEStudyRootQueryRetrieveInformationModel); | 240 knownAbstractSyntaxes.push_back(UID_MOVEStudyRootQueryRetrieveInformationModel); |
241 } | 241 } |
242 | 242 |
243 const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; | |
244 int numTransferSyntaxes = 0; | |
245 | |
246 cond = ASC_receiveAssociation(net, &assoc, | 243 cond = ASC_receiveAssociation(net, &assoc, |
247 /*opt_maxPDU*/ ASC_DEFAULTMAXPDU, | 244 /*opt_maxPDU*/ ASC_DEFAULTMAXPDU, |
248 NULL, NULL, | 245 NULL, NULL, |
249 /*opt_secureConnection*/ OFFalse, | 246 /*opt_secureConnection*/ OFFalse, |
250 DUL_NOBLOCK, 1); | 247 DUL_NOBLOCK, 1); |
265 return NULL; | 262 return NULL; |
266 } | 263 } |
267 | 264 |
268 LOG(INFO) << "Association Received"; | 265 LOG(INFO) << "Association Received"; |
269 | 266 |
270 transferSyntaxes[0] = UID_LittleEndianExplicitTransferSyntax; | 267 std::vector<const char*> transferSyntaxes; |
271 transferSyntaxes[1] = UID_BigEndianExplicitTransferSyntax; | 268 |
272 transferSyntaxes[2] = UID_LittleEndianImplicitTransferSyntax; | 269 #if 0 |
273 numTransferSyntaxes = 3; | 270 // This is the list of the transfer syntaxes that were supported up to Orthanc 0.7.1 |
271 transferSyntaxes.push_back(UID_LittleEndianExplicitTransferSyntax); | |
272 transferSyntaxes.push_back(UID_BigEndianExplicitTransferSyntax); | |
273 transferSyntaxes.push_back(UID_LittleEndianImplicitTransferSyntax); | |
274 #else | |
275 transferSyntaxes.push_back(UID_LittleEndianImplicitTransferSyntax); | |
276 transferSyntaxes.push_back(UID_DeflatedExplicitVRLittleEndianTransferSyntax); | |
277 transferSyntaxes.push_back(UID_JPEGProcess1TransferSyntax); | |
278 transferSyntaxes.push_back(UID_JPEGProcess2_4TransferSyntax); | |
279 transferSyntaxes.push_back(UID_JPEGProcess3_5TransferSyntax); | |
280 transferSyntaxes.push_back(UID_JPEGProcess6_8TransferSyntax); | |
281 transferSyntaxes.push_back(UID_JPEGProcess7_9TransferSyntax); | |
282 transferSyntaxes.push_back(UID_JPEGProcess10_12TransferSyntax); | |
283 transferSyntaxes.push_back(UID_JPEGProcess11_13TransferSyntax); | |
284 transferSyntaxes.push_back(UID_JPEGProcess14TransferSyntax); | |
285 transferSyntaxes.push_back(UID_JPEGProcess15TransferSyntax); | |
286 transferSyntaxes.push_back(UID_JPEGProcess16_18TransferSyntax); | |
287 transferSyntaxes.push_back(UID_JPEGProcess17_19TransferSyntax); | |
288 transferSyntaxes.push_back(UID_JPEGProcess20_22TransferSyntax); | |
289 transferSyntaxes.push_back(UID_JPEGProcess21_23TransferSyntax); | |
290 transferSyntaxes.push_back(UID_JPEGProcess24_26TransferSyntax); | |
291 transferSyntaxes.push_back(UID_JPEGProcess25_27TransferSyntax); | |
292 transferSyntaxes.push_back(UID_JPEGProcess28TransferSyntax); | |
293 transferSyntaxes.push_back(UID_JPEGProcess29TransferSyntax); | |
294 transferSyntaxes.push_back(UID_JPEGProcess14SV1TransferSyntax); | |
295 transferSyntaxes.push_back(UID_JPEGLSLosslessTransferSyntax); | |
296 transferSyntaxes.push_back(UID_JPEGLSLossyTransferSyntax); | |
297 transferSyntaxes.push_back(UID_JPEG2000LosslessOnlyTransferSyntax); | |
298 transferSyntaxes.push_back(UID_JPEG2000TransferSyntax); | |
299 transferSyntaxes.push_back(UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax); | |
300 transferSyntaxes.push_back(UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax); | |
301 transferSyntaxes.push_back(UID_JPIPReferencedTransferSyntax); | |
302 transferSyntaxes.push_back(UID_JPIPReferencedDeflateTransferSyntax); | |
303 transferSyntaxes.push_back(UID_MPEG2MainProfileAtMainLevelTransferSyntax); | |
304 transferSyntaxes.push_back(UID_MPEG2MainProfileAtHighLevelTransferSyntax); | |
305 transferSyntaxes.push_back(UID_RLELosslessTransferSyntax); | |
306 #endif | |
274 | 307 |
275 /* accept the Verification SOP Class if presented */ | 308 /* accept the Verification SOP Class if presented */ |
276 cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, &knownAbstractSyntaxes[0], knownAbstractSyntaxes.size(), transferSyntaxes, numTransferSyntaxes); | 309 cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, &knownAbstractSyntaxes[0], knownAbstractSyntaxes.size(), &transferSyntaxes[0], transferSyntaxes.size()); |
277 if (cond.bad()) | 310 if (cond.bad()) |
278 { | 311 { |
279 LOG(INFO) << cond.text(); | 312 LOG(INFO) << cond.text(); |
280 AssociationCleanup(assoc); | 313 AssociationCleanup(assoc); |
281 return NULL; | 314 return NULL; |
282 } | 315 } |
283 | 316 |
284 /* the array of Storage SOP Class UIDs comes from dcuid.h */ | 317 /* the array of Storage SOP Class UIDs comes from dcuid.h */ |
285 cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, dcmAllStorageSOPClassUIDs, numberOfAllDcmStorageSOPClassUIDs, transferSyntaxes, numTransferSyntaxes); | 318 cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, dcmAllStorageSOPClassUIDs, numberOfAllDcmStorageSOPClassUIDs, &transferSyntaxes[0], transferSyntaxes.size()); |
286 if (cond.bad()) | 319 if (cond.bad()) |
287 { | 320 { |
288 LOG(INFO) << cond.text(); | 321 LOG(INFO) << cond.text(); |
289 AssociationCleanup(assoc); | 322 AssociationCleanup(assoc); |
290 return NULL; | 323 return NULL; |
291 } | 324 } |
292 | 325 |
293 #if ORTHANC_PROMISCUOUS == 1 | 326 #if ORTHANC_PROMISCUOUS == 1 |
294 /* accept everything not known not to be a storage SOP class */ | 327 /* accept everything not known not to be a storage SOP class */ |
295 cond = acceptUnknownContextsWithPreferredTransferSyntaxes( | 328 cond = acceptUnknownContextsWithPreferredTransferSyntaxes( |
296 assoc->params, transferSyntaxes, numTransferSyntaxes); | 329 assoc->params, &transferSyntaxes[0], transferSyntaxes.size()); |
297 if (cond.bad()) | 330 if (cond.bad()) |
298 { | 331 { |
299 LOG(INFO) << cond.text(); | 332 LOG(INFO) << cond.text(); |
300 AssociationCleanup(assoc); | 333 AssociationCleanup(assoc); |
301 return NULL; | 334 return NULL; |