diff OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 999:db18c071fbd7 lua-scripting

store-scu filter
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 04 Jul 2014 14:09:53 +0200
parents 83622b0f544c
children 13e230bbd882
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp	Thu Jul 03 18:30:23 2014 +0200
+++ b/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp	Fri Jul 04 14:09:53 2014 +0200
@@ -36,6 +36,8 @@
 #include "../OrthancInitialization.h"
 #include "../../Core/HttpClient.h"
 #include "../FromDcmtkBridge.h"
+#include "../Scheduler/ServerJob.h"
+#include "../Scheduler/StoreScuFilter.h"
 
 #include <glog/logging.h>
 
@@ -321,17 +323,16 @@
     }
 
     RemoteModalityParameters p = Configuration::GetModalityUsingSymbolicName(remote);
-    ReusableDicomUserConnection::Locker locker(context.GetReusableDicomUserConnection(), p);
 
+    ServerJob job;
     for (std::list<std::string>::const_iterator 
            it = instances.begin(); it != instances.end(); ++it)
     {
-      LOG(INFO) << "Sending resource " << *it << " to modality \"" << remote << "\"";
+      job.AddFilter(new StoreScuFilter(context, p)).AddInput(*it);
+    }
 
-      std::string dicom;
-      context.ReadFile(dicom, *it, FileContentType_Dicom);
-      locker.GetConnection().Store(dicom);
-    }
+    job.SetDescription("Store-SCU from HTTP to modality \"" + remote + "\"");
+    context.GetScheduler().SubmitAndWait(job);
 
     call.GetOutput().AnswerBuffer("{}", "application/json");
   }