salsa 0.7.1
Loading...
Searching...
No Matches
Job.hh
1#pragma once
2#include <json/json.h>
3#include "Object.hh"
4#include "TaskInfo.pb.h"
5
6namespace Salsa {
15
16class Job : public Object {
17public:
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
90protected:
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
105private:
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
void * submitterSocketID() const
Returns submitter socket identity.
Definition Job.hh:81
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
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