salsa  0.4.15
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 isTaskInQueue(uint32_t id, EQueueType type) const;
64 
65  using JobID_t = uint32_t;
66 
68  bool changed() const { return mChanged; }
70  void changed(bool c) { mChanged = c; }
71 
76 
78  void * submitterSocketID() const { return mSubmitterSocketID; }
80  void submitterSocketID(void * id) { mSubmitterSocketID = id; }
81 
83  size_t maxIdsInJson() const { return mMaxIdsInJson; }
85  void maxIdsInJson(size_t i) { mMaxIdsInJson = i; }
86 
87 protected:
88  std::map<uint32_t, TaskInfo *> mTasks[all] = {};
89  std::string mUUID{""};
90  uint32_t mUid{99};
91  uint32_t mGid{99};
92  std::string mConsumerUUID{""};
93  std::string mFeederUUID{""};
94  std::string mType{"NONE"};
95  uint64_t mTimeStarted{};
96  uint64_t mTimeFinished{};
98  void * mSubmitterSocketID{nullptr};
99  size_t mMaxIdsInJson{1000};
100 
101 private:
102  bool mChanged = false;
103 };
104 } // 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:85
void changed(bool c)
Set if job info was changed.
Definition: Job.hh:70
bool haveMoreTasks() const
Task statuses.
Definition: Job.cc:263
bool addTask(uint32_t id, TaskInfo *pJob, EQueueType type)
Definition: Job.cc:29
void tasks(std::vector< TaskInfo * > &v, EQueueType type, bool clear=true)
Definition: Job.cc:121
std::string consumer() const
Definition: Job.cc:237
int mSubmitterSocketIndex
Submitter socket index in NodeZyre::mZmqSockets.
Definition: Job.hh:97
void json(Json::Value &json)
Definition: Job.cc:164
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:88
TaskInfo * nextTask()
Definition: Job.cc:105
bool changed() const
Returns if job info was changed.
Definition: Job.hh:68
size_t sizeNotFinished() const
Definition: Job.cc:218
void submitterSocketID(void *id)
Set submitter socket identity.
Definition: Job.hh:80
uint64_t mTimeFinished
Time finished.
Definition: Job.hh:96
void print() const
Definition: Job.cc:153
std::string mUUID
Job UUID.
Definition: Job.hh:89
std::string mType
Job type.
Definition: Job.hh:94
bool moveTask(uint32_t id, EQueueType from, EQueueType to)
Definition: Job.cc:52
Job(std::string uuid="", std::string type="NONE")
Definition: Job.cc:4
void * submitterSocketID() const
Returns submitter socket identity.
Definition: Job.hh:78
size_t size(EQueueType t=all) const
Definition: Job.cc:198
uint64_t mTimeStarted
Time started.
Definition: Job.hh:95
int submitterSocketIndex() const
Returns submitter socket index.
Definition: Job.hh:73
virtual ~Job()
Definition: Job.cc:15
void * mSubmitterSocketID
Submitter socket identity.
Definition: Job.hh:98
std::string mFeederUUID
Feeder UUID.
Definition: Job.hh:93
bool mChanged
Flag if job was changed.
Definition: Job.hh:102
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:65
bool removeTask(uint32_t id, EQueueType from)
Definition: Job.cc:89
std::string mConsumerUUID
Source (consumer) UUID.
Definition: Job.hh:92
std::string feeder() const
Definition: Job.cc:254
uint32_t mUid
Job user id (nobody : 99)
Definition: Job.hh:90
void submitterSocketIndex(int i)
Set submitter socket index.
Definition: Job.hh:75
EQueueType
Queue types.
Definition: Job.hh:19
uint32_t mGid
Job group id (nogroup : 99)
Definition: Job.hh:91
size_t mMaxIdsInJson
Maximum number when joh ids are produced in json.
Definition: Job.hh:99
size_t maxIdsInJson() const
Returns Maximum number when joh ids are produced in json.
Definition: Job.hh:83
bool isFinished()
Returns if jobs is finished.
Definition: Job.cc:271
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:136
Base Salsa Object class.
Definition: Object.hh:15