diff Core/DicomNetworking/DicomStoreUserConnection.h @ 3880:cdd0cb5ec4e4 transcoding

DicomStoreUserConnection::LookupTranscoding()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 04 May 2020 22:10:55 +0200
parents a18b34dec94a
children f23ab7829a8d
line wrap: on
line diff
--- a/Core/DicomNetworking/DicomStoreUserConnection.h	Mon May 04 19:17:07 2020 +0200
+++ b/Core/DicomNetworking/DicomStoreUserConnection.h	Mon May 04 22:10:55 2020 +0200
@@ -69,10 +69,15 @@
   {
   private:
     typedef std::map<std::string, std::set<DicomTransferSyntax> > RegisteredClasses;
+
+    // "ProposedOriginalClasses" keeps track of the storage classes
+    // that were proposed with a single transfer syntax
+    typedef std::set< std::pair<std::string, DicomTransferSyntax> > ProposedOriginalClasses;
     
     DicomAssociationParameters           parameters_;
     boost::shared_ptr<DicomAssociation>  association_;  // "shared_ptr" is for PImpl
     RegisteredClasses                    registeredClasses_;
+    ProposedOriginalClasses              proposedOriginalClasses_;
     bool                                 proposeCommonClasses_;
     bool                                 proposeUncompressedSyntaxes_;
     bool                                 proposeRetiredBigEndian_;
@@ -86,6 +91,14 @@
                           DicomTransferSyntax& transferSyntax,
                           DcmDataset& dataset);
 
+    bool LookupPresentationContext(uint8_t& presentationContextId,
+                                   const std::string& sopClassUid,
+                                   DicomTransferSyntax transferSyntax);
+    
+    bool NegotiatePresentationContext(uint8_t& presentationContextId,
+                                      const std::string& sopClassUid,
+                                      DicomTransferSyntax transferSyntax);
+
     void StoreInternal(std::string& sopClassUid,
                        std::string& sopInstanceUid,
                        DcmDataset& dataset,
@@ -133,17 +146,6 @@
     void RegisterStorageClass(const std::string& sopClassUid,
                               DicomTransferSyntax syntax);
 
-    // Should only be used if transcoding
-    // TODO => to private
-    bool LookupPresentationContext(uint8_t& presentationContextId,
-                                   const std::string& sopClassUid,
-                                   DicomTransferSyntax transferSyntax);
-    
-    // TODO => to private
-    bool NegotiatePresentationContext(uint8_t& presentationContextId,
-                                      const std::string& sopClassUid,
-                                      DicomTransferSyntax transferSyntax);
-
     void Store(std::string& sopClassUid,
                std::string& sopInstanceUid,
                const void* buffer,
@@ -158,5 +160,9 @@
     {
       Store(sopClassUid, sopInstanceUid, buffer, size, "", 0);  // Not a C-Move
     }
+
+    bool LookupTranscoding(std::set<DicomTransferSyntax>& acceptedSyntaxes,
+                           const std::string& sopClassUid,
+                           DicomTransferSyntax sourceSyntax);
   };
 }