view OrthancServer/Plugins/Samples/DelayedDeletion/LargeDeleteJob.h @ 5129:16138d6d568d

fix decoding of RLE images for which the "Planar Configuration" tag (0028,0006) equals 1
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 22 Dec 2022 15:28:14 +0100 (2022-12-22)
parents c2ebc47f4f18
children 99751c5a7cfe
line wrap: on
line source
#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);
};