comparison OrthancFramework/Sources/DicomNetworking/Internals/CommandDispatcher.cpp @ 4473:68f52897c119

new URIs: /tools/accepted-transfer-syntaxes and /tools/unknown-sop-class-accepted to replace Lua callbacks for transfer syntaxes
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 26 Jan 2021 14:48:10 +0100
parents 9c070a34de18
children c1f36fd13730
comparison
equal deleted inserted replaced
4472:28a4baadde17 4473:68f52897c119
74 74
75 #if !defined(DCMTK_VERSION_NUMBER) 75 #if !defined(DCMTK_VERSION_NUMBER)
76 # error The macro DCMTK_VERSION_NUMBER must be defined 76 # error The macro DCMTK_VERSION_NUMBER must be defined
77 #endif 77 #endif
78 78
79 #include "FindScp.h"
80 #include "StoreScp.h"
81 #include "MoveScp.h"
82 #include "GetScp.h"
83 #include "../../Compatibility.h" 79 #include "../../Compatibility.h"
84 #include "../../Toolbox.h" 80 #include "../../DicomParsing/FromDcmtkBridge.h"
85 #include "../../Logging.h" 81 #include "../../Logging.h"
86 #include "../../OrthancException.h" 82 #include "../../OrthancException.h"
83 #include "../../Toolbox.h"
84 #include "FindScp.h"
85 #include "GetScp.h"
86 #include "MoveScp.h"
87 #include "StoreScp.h"
87 88
88 #include <dcmtk/dcmdata/dcdeftag.h> /* for storage commitment */ 89 #include <dcmtk/dcmdata/dcdeftag.h> /* for storage commitment */
89 #include <dcmtk/dcmdata/dcsequen.h> /* for class DcmSequenceOfItems */ 90 #include <dcmtk/dcmdata/dcsequen.h> /* for class DcmSequenceOfItems */
90 #include <dcmtk/dcmdata/dcuid.h> /* for variable dcmAllStorageSOPClassUIDs */ 91 #include <dcmtk/dcmdata/dcuid.h> /* for variable dcmAllStorageSOPClassUIDs */
91 #include <dcmtk/dcmnet/dcasccfg.h> /* for class DcmAssociationConfiguration */ 92 #include <dcmtk/dcmnet/dcasccfg.h> /* for class DcmAssociationConfiguration */
423 * In the absence of filter, accept all the known transfer 424 * In the absence of filter, accept all the known transfer
424 * syntaxes. Note that this is different from Orthanc 425 * syntaxes. Note that this is different from Orthanc
425 * framework <= 1.8.2, where only the uncompressed transfer 426 * framework <= 1.8.2, where only the uncompressed transfer
426 * syntaxes are accepted by default. 427 * syntaxes are accepted by default.
427 **/ 428 **/
428 GetAllTransferSyntaxes(storageTransferSyntaxes); 429 GetAllDicomTransferSyntaxes(storageTransferSyntaxes);
429 } 430 }
430 431
431 if (storageTransferSyntaxes.empty()) 432 if (storageTransferSyntaxes.empty())
432 { 433 {
433 LOG(WARNING) << "The DICOM server accepts no transfer syntax, thus C-STORE SCP is disabled"; 434 LOG(WARNING) << "The DICOM server accepts no transfer syntax, thus C-STORE SCP is disabled";
444 * 445 *
445 * TODO - Should "PREFERRED_TRANSFER_SYNTAX" be an option of 446 * TODO - Should "PREFERRED_TRANSFER_SYNTAX" be an option of
446 * class "DicomServer"? 447 * class "DicomServer"?
447 **/ 448 **/
448 const DicomTransferSyntax PREFERRED_TRANSFER_SYNTAX = DicomTransferSyntax_LittleEndianExplicit; 449 const DicomTransferSyntax PREFERRED_TRANSFER_SYNTAX = DicomTransferSyntax_LittleEndianExplicit;
449 450
451 E_TransferSyntax dummy;
452 assert(FromDcmtkBridge::LookupDcmtkTransferSyntax(dummy, PREFERRED_TRANSFER_SYNTAX));
453
450 std::vector<const char*> storageTransferSyntaxesC; 454 std::vector<const char*> storageTransferSyntaxesC;
451 storageTransferSyntaxesC.reserve(storageTransferSyntaxes.size()); 455 storageTransferSyntaxesC.reserve(storageTransferSyntaxes.size());
452 456
453 if (storageTransferSyntaxes.find(PREFERRED_TRANSFER_SYNTAX) != storageTransferSyntaxes.end()) 457 if (storageTransferSyntaxes.find(PREFERRED_TRANSFER_SYNTAX) != storageTransferSyntaxes.end())
454 { 458 {
455 storageTransferSyntaxesC.push_back(GetTransferSyntaxUid(PREFERRED_TRANSFER_SYNTAX)); 459 storageTransferSyntaxesC.push_back(GetTransferSyntaxUid(PREFERRED_TRANSFER_SYNTAX));
456 } 460 }
457 461
458 for (std::set<DicomTransferSyntax>::const_iterator 462 for (std::set<DicomTransferSyntax>::const_iterator
459 it = storageTransferSyntaxes.begin(); it != storageTransferSyntaxes.end(); ++it) 463 syntax = storageTransferSyntaxes.begin(); syntax != storageTransferSyntaxes.end(); ++syntax)
460 { 464 {
461 if (*it != PREFERRED_TRANSFER_SYNTAX) // Don't add the preferred transfer syntax twice 465 if (*syntax != PREFERRED_TRANSFER_SYNTAX && // Don't add the preferred transfer syntax twice
466 // Make sure that the current version of DCMTK knows this transfer syntax
467 FromDcmtkBridge::LookupDcmtkTransferSyntax(dummy, *syntax))
462 { 468 {
463 storageTransferSyntaxesC.push_back(GetTransferSyntaxUid(*it)); 469 storageTransferSyntaxesC.push_back(GetTransferSyntaxUid(*syntax));
464 } 470 }
465 } 471 }
466 472
467 /* the array of Storage SOP Class UIDs that is defined within "dcmdata/libsrc/dcuid.cc" */ 473 /* the array of Storage SOP Class UIDs that is defined within "dcmdata/libsrc/dcuid.cc" */
468 size_t count = 0; 474 size_t count = 0;