salsa  0.4.0
Job.hh
1 #pragma once
2 
3 #include <Object.hh>
4 #include <TaskInfo.pb.h>
5 #include <json/json.h>
6 
7 namespace Salsa {
16 
17 class Job : public Object {
18 public:
20  enum EQueueType { pending = 0, assigned = 1, running = 2, done = 3, failed = 4, all = 5 };
21 
22  Job(std::string uuid = "", std::string type = "NONE");
23  virtual ~Job();
24 
25  void print() const;
26  void json(Json::Value & json);
27 
29  std::string uuid() const { return mUUID; }
30 
32  uint64_t timeStarted() const { return mTimeStarted; }
34  uint64_t timeFinished() const { return mTimeFinished; }
35 
36  // TODO Get next available task?job?
37  TaskInfo * nextTask(); // I assume task
38 
39  // TODO Annotate task ops
40  void tasks(std::vector<TaskInfo *> & v, EQueueType type, bool clear = true);
41  bool addTask(uint32_t id, TaskInfo * pJob, EQueueType type);
42  bool moveTask(uint32_t id, EQueueType from, EQueueType to);
43  bool moveTask(uint32_t id, TaskInfo * pJI, EQueueType from, EQueueType to);
44  bool removeTask(uint32_t id, EQueueType from);
45 
46  // TODO size ops
47  size_t size(EQueueType t = all) const;
48  size_t sizeNotFinished() const;
49 
50  // Get/set consumer (receiver)
51  void consumer(std::string uuid);
52  std::string consumer() const;
53 
54  // Get/set feeder (transmitter)
55  void feeder(std::string uuid);
56  std::string feeder() const;
57 
59  bool haveMoreTasks() const;
61  bool isFinished();
62 
64  bool isTaskInQueue(uint32_t id, EQueueType type) const;
65 
66  using JobID_t = uint32_t;
67 
69  bool changed() const { return mChanged; }
71  void changed(bool c) { mChanged = c; }
72 
74  int submiterSocketIndex() const { return mSubmiterSocketIndex; }
77 
79  void * submiterSocketID() const { return mSubmiterSocketID; }
81  void submiterSocketID(void * id) { mSubmiterSocketID = id; }
82 
83 protected:
84  std::map<uint32_t, TaskInfo *> mTasks[all] = {};
85  std::string mUUID{""};
86  std::string mConsumerUUID{""};
87  std::string mFeederUUID{""};
88  std::string mType{"NONE"};
89  uint64_t mTimeStarted{};
90  uint64_t mTimeFinished{};
92  void * mSubmiterSocketID{nullptr};
93 
94 private:
95  bool mChanged = false;
96 };
97 } // namespace Salsa
bool removeTask(uint32_t id, EQueueType from)
Definition: Job.cc:84
uint32_t JobID_t
Job ID type alias.
Definition: Job.hh:66
int submiterSocketIndex() const
Returns submiter socket index.
Definition: Job.hh:74
bool moveTask(uint32_t id, EQueueType from, EQueueType to)
Definition: Job.cc:47
size_t sizeNotFinished() const
Definition: Job.cc:199
void submiterSocketID(void *id)
Set submiter socket identity.
Definition: Job.hh:81
Job(std::string uuid="", std::string type="NONE")
Definition: Job.cc:4
std::string mFeederUUID
Feeder UUID.
Definition: Job.hh:87
void changed(bool c)
Set if job info was changed.
Definition: Job.hh:71
void submiterSocketIndex(int i)
Set submiter socket index.
Definition: Job.hh:76
Job class.
Definition: Job.hh:17
bool isFinished()
Returns if jobs is finished.
Definition: Job.cc:252
int mSubmiterSocketIndex
Submiter socket index in NodeZyre::mZmqSockets.
Definition: Job.hh:91
bool changed() const
Returns if job info was changed.
Definition: Job.hh:69
EQueueType
Queue types.
Definition: Job.hh:20
std::string uuid() const
returns UUID
Definition: Job.hh:29
std::string mConsumerUUID
Source (consumer) UUID.
Definition: Job.hh:86
std::string mUUID
Job UUID.
Definition: Job.hh:85
std::map< uint32_t, TaskInfo * > mTasks[all]
Lists of jobs.
Definition: Job.hh:84
virtual ~Job()
Definition: Job.cc:15
uint64_t timeFinished() const
Returns time finished for the job.
Definition: Job.hh:34
bool mChanged
Flag if job was changed.
Definition: Job.hh:95
std::string feeder() const
Definition: Job.cc:235
bool haveMoreTasks() const
Task statuses.
Definition: Job.cc:244
bool addTask(uint32_t id, TaskInfo *pJob, EQueueType type)
Definition: Job.cc:29
void json(Json::Value &json)
Definition: Job.cc:159
Base Salsa Object class.
Definition: Object.hh:15
std::string consumer() const
Definition: Job.cc:218
std::string mType
Job type.
Definition: Job.hh:88
void print() const
Definition: Job.cc:148
void * submiterSocketID() const
Returns submiter socket identity.
Definition: Job.hh:79
uint64_t mTimeFinished
Time finished.
Definition: Job.hh:90
uint64_t mTimeStarted
Time started.
Definition: Job.hh:89
void tasks(std::vector< TaskInfo * > &v, EQueueType type, bool clear=true)
Definition: Job.cc:116
uint64_t timeStarted() const
Return time started for the job.
Definition: Job.hh:32
TaskInfo * nextTask()
Definition: Job.cc:100
size_t size(EQueueType t=all) const
Definition: Job.cc:179
bool isTaskInQueue(uint32_t id, EQueueType type) const
Check task presence in certain queue.
Definition: Job.cc:131
void * mSubmiterSocketID
Submiter socket identity.
Definition: Job.hh:92