salsa  0.4.0
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 
82 protected:
83  std::map<uint32_t, TaskInfo *> mTasks[all] = {};
84  std::string mUUID{""};
85  uint32_t mUid{99};
86  uint32_t mGid{99};
87  std::string mConsumerUUID{""};
88  std::string mFeederUUID{""};
89  std::string mType{"NONE"};
90  uint64_t mTimeStarted{};
91  uint64_t mTimeFinished{};
93  void * mSubmitterSocketID{nullptr};
94 
95 private:
96  bool mChanged = false;
97 };
98 } // namespace Salsa
bool removeTask(uint32_t id, EQueueType from)
Definition: Job.cc:89
uint32_t JobID_t
Job ID type alias.
Definition: Job.hh:65
bool moveTask(uint32_t id, EQueueType from, EQueueType to)
Definition: Job.cc:52
int submitterSocketIndex() const
Returns submitter socket index.
Definition: Job.hh:73
int mSubmitterSocketIndex
Submitter socket index in NodeZyre::mZmqSockets.
Definition: Job.hh:92
size_t sizeNotFinished() const
Definition: Job.cc:216
Job(std::string uuid="", std::string type="NONE")
Definition: Job.cc:4
std::string mFeederUUID
Feeder UUID.
Definition: Job.hh:88
void * mSubmitterSocketID
Submitter socket identity.
Definition: Job.hh:93
void submitterSocketIndex(int i)
Set submitter socket index.
Definition: Job.hh:75
void changed(bool c)
Set if job info was changed.
Definition: Job.hh:70
Job class
Definition: Job.hh:16
bool isFinished()
Returns if jobs is finished.
Definition: Job.cc:269
bool changed() const
Returns if job info was changed.
Definition: Job.hh:68
void tasks(std::vector< TaskInfo *> &v, EQueueType type, bool clear=true)
Definition: Job.cc:121
void submitterSocketID(void *id)
Set submitter socket identity.
Definition: Job.hh:80
EQueueType
Queue types.
Definition: Job.hh:19
std::string uuid() const
returns UUID
Definition: Job.hh:28
std::string mConsumerUUID
Source (consumer) UUID.
Definition: Job.hh:87
std::string mUUID
Job UUID.
Definition: Job.hh:84
std::map< uint32_t, TaskInfo * > mTasks[all]
Lists of jobs.
Definition: Job.hh:83
virtual ~Job()
Definition: Job.cc:15
uint64_t timeFinished() const
Returns time finished for the job.
Definition: Job.hh:33
bool mChanged
Flag if job was changed.
Definition: Job.hh:96
Definition: Actor.cc:2
std::string feeder() const
Definition: Job.cc:252
bool haveMoreTasks() const
Task statuses.
Definition: Job.cc:261
bool addTask(uint32_t id, TaskInfo *pJob, EQueueType type)
Definition: Job.cc:29
void json(Json::Value &json)
Definition: Job.cc:164
Base Salsa Object class
Definition: Object.hh:15
std::string consumer() const
Definition: Job.cc:235
std::string mType
Job type.
Definition: Job.hh:89
void print() const
Definition: Job.cc:153
uint32_t mUid
Job user id (nobody : 99)
Definition: Job.hh:85
uint32_t mGid
Job group id (nogroup : 99)
Definition: Job.hh:86
uint64_t mTimeFinished
Time finished.
Definition: Job.hh:91
void * submitterSocketID() const
Returns submitter socket identity.
Definition: Job.hh:78
uint64_t mTimeStarted
Time started.
Definition: Job.hh:90
uint64_t timeStarted() const
Return time started for the job.
Definition: Job.hh:31
TaskInfo * nextTask()
Definition: Job.cc:105
size_t size(EQueueType t=all) const
Definition: Job.cc:196
bool isTaskInQueue(uint32_t id, EQueueType type) const
Check task presence in certain queue.
Definition: Job.cc:136