aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/jobqueue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zencore/jobqueue.cpp')
-rw-r--r--src/zencore/jobqueue.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/zencore/jobqueue.cpp b/src/zencore/jobqueue.cpp
index 75c1be42b..d6a8a6479 100644
--- a/src/zencore/jobqueue.cpp
+++ b/src/zencore/jobqueue.cpp
@@ -90,7 +90,7 @@ public:
uint64_t NewJobId = IdGenerator.fetch_add(1);
if (NewJobId == 0)
{
- IdGenerator.fetch_add(1);
+ NewJobId = IdGenerator.fetch_add(1);
}
RefPtr<Job> NewJob(new Job());
NewJob->Queue = this;
@@ -129,7 +129,7 @@ public:
QueuedJobs.erase(It);
}
});
- ZEN_ERROR("Failed to schedule job {}:'{}' to job queue. Reason: ''", NewJob->Id.Id, NewJob->Name, Ex.what());
+ ZEN_ERROR("Failed to schedule job {}:'{}' to job queue. Reason: '{}'", NewJob->Id.Id, NewJob->Name, Ex.what());
throw;
}
}
@@ -221,11 +221,11 @@ public:
std::vector<JobInfo> Jobs;
QueueLock.WithSharedLock([&]() {
- for (auto It : RunningJobs)
+ for (const auto& It : RunningJobs)
{
Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Running});
}
- for (auto It : CompletedJobs)
+ for (const auto& It : CompletedJobs)
{
if (IsStale(It.second->EndTick))
{
@@ -234,7 +234,7 @@ public:
}
Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Completed});
}
- for (auto It : AbortedJobs)
+ for (const auto& It : AbortedJobs)
{
if (IsStale(It.second->EndTick))
{
@@ -243,7 +243,7 @@ public:
}
Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Aborted});
}
- for (auto It : QueuedJobs)
+ for (const auto& It : QueuedJobs)
{
Jobs.push_back({.Id = It->Id, .Status = JobStatus::Queued});
}
@@ -337,7 +337,7 @@ public:
std::atomic_bool InitializedFlag = false;
RwLock QueueLock;
std::deque<RefPtr<Job>> QueuedJobs;
- std::unordered_map<uint64_t, Job*> RunningJobs;
+ std::unordered_map<uint64_t, RefPtr<Job>> RunningJobs;
std::unordered_map<uint64_t, RefPtr<Job>> CompletedJobs;
std::unordered_map<uint64_t, RefPtr<Job>> AbortedJobs;
@@ -429,20 +429,16 @@ JobQueue::ToString(JobStatus Status)
{
case JobQueue::JobStatus::Queued:
return "Queued"sv;
- break;
case JobQueue::JobStatus::Running:
return "Running"sv;
- break;
case JobQueue::JobStatus::Aborted:
return "Aborted"sv;
- break;
case JobQueue::JobStatus::Completed:
return "Completed"sv;
- break;
default:
ZEN_ASSERT(false);
+ return ""sv;
}
- return ""sv;
}
std::unique_ptr<JobQueue>
@@ -460,6 +456,8 @@ jobqueue_forcelink()
{
}
+TEST_SUITE_BEGIN("core.jobqueue");
+
TEST_CASE("JobQueue")
{
std::unique_ptr<JobQueue> Queue(MakeJobQueue(2, "queue"));
@@ -580,6 +578,8 @@ TEST_CASE("JobQueue")
}
JobsLatch.Wait();
}
+
+TEST_SUITE_END();
#endif
} // namespace zen