Mercurial > hg > orthanc
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; |