diff OrthancServer/Plugins/Samples/DelayedDeletion/LargeDeleteJob.h @ 5024:c2ebc47f4f18 delayed-deletion

wip: adding DelayedDeletion plugin
author Alain Mazy <am@osimis.io>
date Mon, 20 Jun 2022 16:53:21 +0200
parents
children 99751c5a7cfe
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancServer/Plugins/Samples/DelayedDeletion/LargeDeleteJob.h	Mon Jun 20 16:53:21 2022 +0200
@@ -0,0 +1,46 @@
+#pragma once
+
+#include "../Common/OrthancPluginCppWrapper.h"
+#include "../../../../OrthancFramework/Sources/Enumerations.h"
+#include "../../../../OrthancFramework/Sources/Compatibility.h"
+
+
+class LargeDeleteJob : public OrthancPlugins::OrthancJob
+{
+private:
+  std::vector<std::string>            resources_;
+  std::vector<Orthanc::ResourceType>  levels_;
+  std::vector<std::string>            instances_;
+  std::vector<std::string>            series_;
+  size_t                              posResources_;
+  size_t                              posInstances_;
+  size_t                              posSeries_;
+  size_t                              posDelete_;
+
+  void UpdateDeleteProgress();
+
+  void ScheduleChildrenResources(std::vector<std::string>& target,
+                                 const std::string& uri);
+  
+  void ScheduleResource(Orthanc::ResourceType level,
+                        const std::string& id);
+
+  void DeleteResource(Orthanc::ResourceType level,
+                      const std::string& id);
+  
+public:
+  LargeDeleteJob(const std::vector<std::string>& resources,
+                 const std::vector<Orthanc::ResourceType>& levels);
+
+  virtual OrthancPluginJobStepStatus Step() ORTHANC_OVERRIDE;
+
+  virtual void Stop(OrthancPluginJobStopReason reason) ORTHANC_OVERRIDE
+  {
+  }
+
+  virtual void Reset() ORTHANC_OVERRIDE;
+
+  static void RestHandler(OrthancPluginRestOutput* output,
+                          const char* url,
+                          const OrthancPluginHttpRequest* request);
+};