1 /**
2  * Orthanc - A Lightweight, RESTful DICOM Store
3  * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4  * Department, University Hospital of Liege, Belgium
5  * Copyright (C) 2017-2021 Osimis S.A., Belgium
6  *
7  * This program is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public License
9  * as published by the Free Software Foundation, either version 3 of
10  * the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this program. If not, see
19  * <http://www.gnu.org/licenses/>.
20  **/
21 
22 
23 #pragma once
24 
25 #include "JobStatus.h"
26 
27 #include <boost/date_time/posix_time/posix_time.hpp>
28 
29 namespace Orthanc
30 {
31   class ORTHANC_PUBLIC JobInfo
32   {
33   private:
34     std::string                       id_;
35     int                               priority_;
36     JobState                          state_;
37     boost::posix_time::ptime          timestamp_;
38     boost::posix_time::ptime          creationTime_;
39     boost::posix_time::ptime          lastStateChangeTime_;
40     boost::posix_time::time_duration  runtime_;
41     bool                              hasEta_;
42     boost::posix_time::ptime          eta_;
43     JobStatus                         status_;
44 
45   public:
46     JobInfo(const std::string& id,
47             int priority,
48             JobState state,
49             const JobStatus& status,
50             const boost::posix_time::ptime& creationTime,
51             const boost::posix_time::ptime& lastStateChangeTime,
52             const boost::posix_time::time_duration& runtime) ORTHANC_LOCAL;
53 
54     JobInfo();
55 
56     const std::string& GetIdentifier() const;
57 
58     int GetPriority() const;
59 
60     JobState GetState() const;
61 
62     const boost::posix_time::ptime& GetInfoTime() const;
63 
64     const boost::posix_time::ptime& GetCreationTime() const;
65 
66     const boost::posix_time::time_duration& GetRuntime() const;
67 
68     bool HasEstimatedTimeOfArrival() const;
69 
70     bool HasCompletionTime() const;
71 
72     const boost::posix_time::ptime& GetEstimatedTimeOfArrival() const;
73 
74     const boost::posix_time::ptime& GetCompletionTime() const;
75 
76     const JobStatus& GetStatus() const;
77 
78     JobStatus& GetStatus();
79 
80     void Format(Json::Value& target) const;
81   };
82 }
83