3 Job::Job(std::string uuid, std::string type) :
Object(), mUUID(uuid), mType(type)
15 for (
int iType = QueueType::pending; iType < QueueType::all; iType++) {
16 for (
auto job :
mTasks[iType]) {
17 pTaskInfo = job.second;
35 SPD_WARN(
"QueueType is our of range [{}]", type);
41 mTasks[type].insert(std::make_pair(
id, pJob));
51 return moveTask(
id,
nullptr, from, to);
59 auto iFound =
mTasks[from].find(
id);
60 if (iFound !=
mTasks[from].end()) {
61 if (pJobInfo ==
nullptr) {
62 pJobInfo = iFound->second;
65 delete iFound->second;
68 mTasks[from].erase(iFound);
72 SPD_WARN(
"Job with id [{}] was not found in queue [{}] !!!",
id, from);
81 auto found =
mTasks[from].find(
id);
82 if (found !=
mTasks[from].end()) {
95 auto pJob =
mTasks[QueueType::pending].begin();
96 if (pJob ==
mTasks[QueueType::pending].end()) {
100 TaskInfo * pJI = pJob->second;
101 moveTask(pJob->first, QueueType::pending, QueueType::assigned);
111 for (
auto task :
mTasks[type]) {
112 v.push_back(task.second);
125 auto found =
mTasks[type].find(
id);
126 if (found !=
mTasks[type].end()) {
138 SPD_INFO(
"{} P[{}] A[{}] R[{}] D[{}] F[{}]\r",
mUUID,
mTasks[QueueType::pending].
size(),
152 d[
"P"] =
static_cast<Json::Value::UInt64
>(
mTasks[QueueType::pending].size());
153 d[
"A"] =
static_cast<Json::Value::UInt64
>(
mTasks[QueueType::assigned].size());
154 d[
"R"] =
static_cast<Json::Value::UInt64
>(
mTasks[QueueType::running].size());
155 d[
"D"] =
static_cast<Json::Value::UInt64
>(
mTasks[QueueType::done].size());
156 d[
"F"] =
static_cast<Json::Value::UInt64
>(
mTasks[QueueType::failed].size());
166 if (type >= QueueType::all) {
167 size_t sum =
mTasks[QueueType::pending].size();
168 sum +=
mTasks[QueueType::assigned].size();
169 sum +=
mTasks[QueueType::running].size();
170 sum +=
mTasks[QueueType::done].size();
171 sum +=
mTasks[QueueType::failed].size();
175 return mTasks[type].size();
183 size_t sum =
mTasks[QueueType::pending].size();
184 sum +=
mTasks[QueueType::assigned].size();
185 sum +=
mTasks[QueueType::running].size();
size_t size(QueueType t=all) const
size_t sizeNotFinished() const
Job(std::string uuid="", std::string type="NONE")
std::string mFeederUUID
Feeder UUID.
bool isTaskInQueue(uint32_t id, QueueType type) const
Check task presence in certain queue.
void tasks(std::vector< TaskInfo *> &v, QueueType type, bool clear=true)
std::string mConsumerUUID
Source (consumer) UUID.
std::string mUUID
Job UUID.
std::map< uint32_t, TaskInfo * > mTasks[all]
Lists of jobs.
bool mHaveMoreTasks
Flag if we have more tasks.
std::string feeder() const
bool haveMoreTasks() const
void json(Json::Value &json)
std::string consumer() const
bool removeTask(uint32_t id, QueueType from)
bool moveTask(uint32_t id, QueueType from, QueueType to)
bool addTask(uint32_t id, TaskInfo *pJob, QueueType type)
TaskInfo * nextJob()
TODO Get next available task?job?