view OrthancFramework/Sources/JobsEngine/SetOfCommandsJob.h @ 5911:bfae0fc2ea1b get-scu-test

Started to work on handling errors as warnings when trying to store instances whose SOPClassUID has not been accepted during the negotiation. Work to be finalized later
author Alain Mazy <am@orthanc.team>
date Mon, 09 Dec 2024 10:07:19 +0100
parents 8329d28611ad
children
line wrap: on
line source

/**
 * Orthanc - A Lightweight, RESTful DICOM Store
 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 * Department, University Hospital of Liege, Belgium
 * Copyright (C) 2017-2023 Osimis S.A., Belgium
 * Copyright (C) 2024-2024 Orthanc Team SRL, Belgium
 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
 *
 * This program is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation, either version 3 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this program. If not, see
 * <http://www.gnu.org/licenses/>.
 **/


#pragma once

#include "IJob.h"

#include "../Compatibility.h"  // For ORTHANC_OVERRIDE

#include <set>

namespace Orthanc
{
  class ORTHANC_PUBLIC SetOfCommandsJob : public IJob
  {
  public:
    class ICommand : public boost::noncopyable
    {
    public:
      virtual ~ICommand()
      {
      }

      virtual bool Execute(const std::string& jobId) = 0;

      virtual void Serialize(Json::Value& target) const = 0;
    };

    class ICommandUnserializer : public boost::noncopyable
    {
    public:
      virtual ~ICommandUnserializer()
      {
      }
      
      virtual ICommand* Unserialize(const Json::Value& source) const = 0;
    };
    
  private:
    bool                    started_;
    std::vector<ICommand*>  commands_;
    bool                    permissive_;
    size_t                  position_;
    std::string             description_;

  public:
    SetOfCommandsJob();

    SetOfCommandsJob(ICommandUnserializer* unserializer  /* takes ownership */,
                     const Json::Value& source);

    virtual ~SetOfCommandsJob();

    size_t GetPosition() const;

    void SetDescription(const std::string& description);

    const std::string& GetDescription() const;

    void Reserve(size_t size);

    size_t GetCommandsCount() const;

    void AddCommand(ICommand* command);  // Takes ownership

    bool IsPermissive() const;

    void SetPermissive(bool permissive);

    virtual void Reset() ORTHANC_OVERRIDE;
    
    virtual void Start() ORTHANC_OVERRIDE;
    
    virtual float GetProgress() const ORTHANC_OVERRIDE;

    bool IsStarted() const;

    const ICommand& GetCommand(size_t index) const;
      
    virtual JobStepResult Step(const std::string& jobId) ORTHANC_OVERRIDE;
    
    virtual void GetPublicContent(Json::Value& value) const ORTHANC_OVERRIDE;
    
    virtual bool Serialize(Json::Value& target) const ORTHANC_OVERRIDE;

    virtual bool GetOutput(std::string& output,
                           MimeType& mime,
                           std::string& filename,
                           const std::string& key) ORTHANC_OVERRIDE
    {
      return false;
    }

    virtual bool DeleteOutput(const std::string& key) ORTHANC_OVERRIDE
    {
      return false;
    }
  };
}