diff OrthancServer/ServerJobs/DicomModalityStoreJob.cpp @ 3862:594263db316a transcoding

DicomModalityStoreJob now uses DicomStoreUserConnection
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 27 Apr 2020 17:28:55 +0200
parents 138d0dde41b5
children 09798f2b985f
line wrap: on
line diff
--- a/OrthancServer/ServerJobs/DicomModalityStoreJob.cpp	Mon Apr 27 15:56:20 2020 +0200
+++ b/OrthancServer/ServerJobs/DicomModalityStoreJob.cpp	Mon Apr 27 17:28:55 2020 +0200
@@ -35,6 +35,7 @@
 #include "DicomModalityStoreJob.h"
 
 #include "../../Core/Compatibility.h"
+#include "../../Core/DicomNetworking/DicomAssociation.h"
 #include "../../Core/Logging.h"
 #include "../../Core/SerializationToolbox.h"
 #include "../ServerContext.h"
@@ -47,7 +48,7 @@
   {
     if (connection_.get() == NULL)
     {
-      connection_.reset(new DicomUserConnection(localAet_, remote_));
+      connection_.reset(new DicomStoreUserConnection(localAet_, remote_));
     }
   }
 
@@ -74,13 +75,16 @@
     
     std::string sopClassUid, sopInstanceUid;
 
+    const void* data = dicom.empty() ? NULL : dicom.c_str();
+    
     if (HasMoveOriginator())
     {
-      connection_->Store(sopClassUid, sopInstanceUid, dicom, moveOriginatorAet_, moveOriginatorId_);
+      connection_->Store(sopClassUid, sopInstanceUid, data, dicom.size(),
+                         moveOriginatorAet_, moveOriginatorId_);
     }
     else
     {
-      connection_->Store(sopClassUid, sopInstanceUid, dicom);
+      connection_->Store(sopClassUid, sopInstanceUid, data, dicom.size());
     }
 
     if (storageCommitment_)
@@ -96,6 +100,9 @@
       
       if (sopClassUids_.size() == GetInstancesCount())
       {
+        assert(IsStarted());
+        connection_.reset(NULL);
+        
         const std::string& remoteAet = remote_.GetApplicationEntityTitle();
         
         LOG(INFO) << "Sending storage commitment request to modality: " << remoteAet;
@@ -105,12 +112,11 @@
         context_.GetStorageCommitmentReports().Store(
           transactionUid_, new StorageCommitmentReports::Report(remoteAet));
         
-        assert(IsStarted());
-        OpenConnection();
-
         std::vector<std::string> a(sopClassUids_.begin(), sopClassUids_.end());
         std::vector<std::string> b(sopInstanceUids_.begin(), sopInstanceUids_.end());
-        connection_->RequestStorageCommitment(transactionUid_, a, b);
+
+        DicomAssociationParameters parameters(localAet_, remote_);
+        DicomAssociation::RequestStorageCommitment(parameters, transactionUid_, a, b);
       }
     }