salsa  0.7.1
Job.hh
1 #pragma once
2 #include <json/json.h>
3 #include "Object.hh"
4 #include "TaskInfo.pb.h"
5 
6 namespace Salsa {
15 
16 class Job : public Object {
17 public:
19  enum EQueueType { pending = 0, assigned = 1, running = 2, done = 3, failed = 4, all = 5 };
20 
21  Job(std::string uuid = "", std::string type = "NONE");
22  virtual ~Job();
23 
24  void print() const;
25  void json(Json::Value & json);
26 
28  std::string uuid() const { return mUUID; }
29 
31  uint64_t timeStarted() const { return mTimeStarted; }
33  uint64_t timeFinished() const { return mTimeFinished; }
34 
35  // TODO Get next available task?job?
36  TaskInfo * nextTask(); // I assume task
37 
38  // TODO Annotate task ops
39  void tasks(std::vector<TaskInfo *> & v, EQueueType type, bool clear = true);
40  bool addTask(uint32_t id, TaskInfo * pJob, EQueueType type);
41  bool moveTask(uint32_t id, EQueueType from, EQueueType to);
42  bool moveTask(uint32_t id, TaskInfo * pJI, EQueueType from, EQueueType to);
43  bool removeTask(uint32_t id, EQueueType from);
44 
45  // TODO size ops
46  size_t size(EQueueType t = all) const;
47  size_t sizeNotFinished() const;
48 
49  // Get/set consumer (receiver)
50  void consumer(std::string uuid);
51  std::string consumer() const;
52 
53  // Get/set feeder (transmitter)
54  void feeder(std::string uuid);
55  std::string feeder() const;
56 
58  bool haveMoreTasks() const;
60  bool isFinished();
61 
63  bool isJustFinished();
64 
66  bool isTaskInQueue(uint32_t id, EQueueType type) const;
67 
68  using JobID_t = uint32_t;
69 
71  bool changed() const { return mChanged; }
73  void changed(bool c) { mChanged = c; }
74 
79 
81  void * submitterSocketID() const { return mSubmitterSocketID; }
83  void submitterSocketID(void * id) { mSubmitterSocketID = id; }
84 
86  size_t maxIdsInJson() const { return mMaxIdsInJson; }
88  void maxIdsInJson(size_t i) { mMaxIdsInJson = i; }
89 
90 protected:
91  std::map<uint32_t, TaskInfo *> mTasks[all] = {};
92  std::string mUUID{""};
93  uint32_t mUid{99};
94  uint32_t mGid{99};
95  std::string mConsumerUUID{""};
96  std::string mFeederUUID{""};
97  std::string mType{"NONE"};
98  uint64_t mTimeStarted{};
99  uint64_t mTimeFinished{0};
101  void * mSubmitterSocketID{nullptr};
102  size_t mMaxIdsInJson{1000};
103  bool mJustFinished{false};
104 
105 private:
106  bool mChanged = false;
107 };
108 } // namespace Salsa
Job class.
Definition: Job.hh:16
void maxIdsInJson(size_t i)
Set Maximum number when joh ids are produced in json.
Definition: Job.hh:88
void changed(bool c)
Set if job info was changed.
Definition: Job.hh:73
bool mJustFinished
Flag if job is finished. Note that it is reported only once.
Definition: Job.hh:103
bool haveMoreTasks() const
Task statuses.
Definition: Job.cc:272
bool addTask(uint32_t id, TaskInfo *pJob, EQueueType type)
Definition: Job.cc:32
void tasks(std::vector< TaskInfo * > &v, EQueueType type, bool clear=true)
Definition: Job.cc:130
std::string consumer() const
Definition: Job.cc:246
int mSubmitterSocketIndex
Submitter socket index in NodeZyre::mZmqSockets.
Definition: Job.hh:100
void json(Json::Value &json)
Definition: Job.cc:173
uint64_t timeFinished() const
Returns time finished for the job.
Definition: Job.hh:33
std::map< uint32_t, TaskInfo * > mTasks[all]
Lists of jobs.
Definition: Job.hh:91
TaskInfo * nextTask()
Definition: Job.cc:114
bool changed() const
Returns if job info was changed.
Definition: Job.hh:71
size_t sizeNotFinished() const
Definition: Job.cc:227
void submitterSocketID(void *id)
Set submitter socket identity.
Definition: Job.hh:83
uint64_t mTimeFinished
Time finished.
Definition: Job.hh:99
void print() const
Definition: Job.cc:162
std::string mUUID
Job UUID.
Definition: Job.hh:92
std::string mType
Job type.
Definition: Job.hh:97
bool moveTask(uint32_t id, EQueueType from, EQueueType to)
Definition: Job.cc:56
Job(std::string uuid="", std::string type="NONE")
Definition: Job.cc:4
void * submitterSocketID() const
Returns submitter socket identity.
Definition: Job.hh:81
size_t size(EQueueType t=all) const
Definition: Job.cc:207
uint64_t mTimeStarted
Time started.
Definition: Job.hh:98
int submitterSocketIndex() const
Returns submitter socket index.
Definition: Job.hh:76
bool isJustFinished()
Returns if job was just finished.
Definition: Job.cc:296
virtual ~Job()
Definition: Job.cc:18
void * mSubmitterSocketID
Submitter socket identity.
Definition: Job.hh:101
std::string mFeederUUID
Feeder UUID.
Definition: Job.hh:96
bool mChanged
Flag if job was changed.
Definition: Job.hh:106
uint64_t timeStarted() const
Return time started for the job.
Definition: Job.hh:31
uint32_t JobID_t
Job ID type alias.
Definition: Job.hh:68
bool removeTask(uint32_t id, EQueueType from)
Definition: Job.cc:96
std::string mConsumerUUID
Source (consumer) UUID.
Definition: Job.hh:95
std::string feeder() const
Definition: Job.cc:263
uint32_t mUid
Job user id (nobody : 99)
Definition: Job.hh:93
void submitterSocketIndex(int i)
Set submitter socket index.
Definition: Job.hh:78
EQueueType
Queue types.
Definition: Job.hh:19
uint32_t mGid
Job group id (nogroup : 99)
Definition: Job.hh:94
size_t mMaxIdsInJson
Maximum number when joh ids are produced in json.
Definition: Job.hh:102
size_t maxIdsInJson() const
Returns Maximum number when joh ids are produced in json.
Definition: Job.hh:86
bool isFinished()
Returns if jobs is finished.
Definition: Job.cc:280
std::string uuid() const
returns UUID
Definition: Job.hh:28
bool isTaskInQueue(uint32_t id, EQueueType type) const
Check task presence in certain queue.
Definition: Job.cc:145
Base Salsa Object class.
Definition: Object.hh:15