aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/jobqueue.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2025-11-01 14:04:35 +0100
committerGitHub Enterprise <[email protected]>2025-11-01 14:04:35 +0100
commita58da97f98697580bf128ed5723ba720cc30f0dc (patch)
tree798e392ddf76128a506293dc0803aaf852203dcd /src/zencore/jobqueue.cpp
parentfix use-after-free in TEST_CASE("compactcas.threadedinsert") (#620) (diff)
downloadzen-a58da97f98697580bf128ed5723ba720cc30f0dc.tar.xz
zen-a58da97f98697580bf128ed5723ba720cc30f0dc.zip
Various fixes to address issues flagged by gcc / non-UE toolchain build (#621)
* gcc: avoid using memset on nontrivial struct * redundant `return std::move` * fixed various compilation issues flagged by gcc * fix issue in xmake.lua detecting whether we are building with the UE toolchain or not * add GCC ignore -Wundef (comment is inaccurate) * remove redundant std::move * don't catch exceptions by value * unreferenced variables * initialize "by the book" instead of memset * remove unused exception reference * add #include <cstring> to fix gcc build * explicitly poulate KeyValueMap by traversing input spans fixes gcc compilation * remove unreferenced variable * eliminate redundant `std::move` which gcc complains about * fix gcc compilation by including <cstring> * tag unreferenced variable to fix gcc compilation * fixes for various cases of naming members the same as their type
Diffstat (limited to 'src/zencore/jobqueue.cpp')
-rw-r--r--src/zencore/jobqueue.cpp43
1 files changed, 22 insertions, 21 deletions
diff --git a/src/zencore/jobqueue.cpp b/src/zencore/jobqueue.cpp
index bd391909d..75c1be42b 100644
--- a/src/zencore/jobqueue.cpp
+++ b/src/zencore/jobqueue.cpp
@@ -45,7 +45,7 @@ public:
JobId Id;
JobFunction Callback;
std::atomic_bool CancelFlag;
- State State;
+ JobState State;
JobClock::Tick CreateTick;
JobClock::Tick StartTick;
JobClock::Tick EndTick;
@@ -223,7 +223,7 @@ public:
QueueLock.WithSharedLock([&]() {
for (auto It : RunningJobs)
{
- Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Running});
+ Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Running});
}
for (auto It : CompletedJobs)
{
@@ -232,7 +232,7 @@ public:
DeadJobs.push_back(JobId{It.first});
continue;
}
- Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Completed});
+ Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Completed});
}
for (auto It : AbortedJobs)
{
@@ -241,11 +241,11 @@ public:
DeadJobs.push_back(JobId{It.first});
continue;
}
- Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Aborted});
+ Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Aborted});
}
for (auto It : QueuedJobs)
{
- Jobs.push_back({.Id = It->Id, .Status = Status::Queued});
+ Jobs.push_back({.Id = It->Id, .Status = JobStatus::Queued});
}
});
if (!DeadJobs.empty())
@@ -264,7 +264,7 @@ public:
// Will only respond once when Complete is true
virtual std::optional<JobDetails> Get(JobId Id) override
{
- auto Convert = [](Status Status, Job& Job) -> JobDetails {
+ auto Convert = [](JobStatus Status, Job& Job) -> JobDetails {
return JobDetails{
.Name = Job.Name,
.Status = Status,
@@ -286,25 +286,25 @@ public:
QueueLock.WithExclusiveLock([&]() {
if (auto It = RunningJobs.find(Id.Id); It != RunningJobs.end())
{
- Result = Convert(Status::Running, *It->second);
+ Result = Convert(JobStatus::Running, *It->second);
return;
}
if (auto It = CompletedJobs.find(Id.Id); It != CompletedJobs.end())
{
- Result = Convert(Status::Completed, *It->second);
+ Result = Convert(JobStatus::Completed, *It->second);
CompletedJobs.erase(It);
return;
}
if (auto It = AbortedJobs.find(Id.Id); It != AbortedJobs.end())
{
- Result = Convert(Status::Aborted, *It->second);
+ Result = Convert(JobStatus::Aborted, *It->second);
AbortedJobs.erase(It);
return;
}
if (auto It = std::find_if(QueuedJobs.begin(), QueuedJobs.end(), [&Id](const RefPtr<Job>& Job) { return Job->Id.Id == Id.Id; });
It != QueuedJobs.end())
{
- Result = Convert(Status::Queued, *(*It));
+ Result = Convert(JobStatus::Queued, *(*It));
return;
}
});
@@ -421,22 +421,22 @@ public:
};
std::string_view
-JobQueue::ToString(Status Status)
+JobQueue::ToString(JobStatus Status)
{
using namespace std::literals;
switch (Status)
{
- case JobQueue::Status::Queued:
+ case JobQueue::JobStatus::Queued:
return "Queued"sv;
break;
- case JobQueue::Status::Running:
+ case JobQueue::JobStatus::Running:
return "Running"sv;
break;
- case JobQueue::Status::Aborted:
+ case JobQueue::JobStatus::Aborted:
return "Aborted"sv;
break;
- case JobQueue::Status::Completed:
+ case JobQueue::JobStatus::Completed:
return "Completed"sv;
break;
default:
@@ -496,6 +496,7 @@ TEST_CASE("JobQueue")
}
Context.ReportProgress("done", "", 100, 0);
});
+ ZEN_UNUSED(Id);
},
WorkerThreadPool::EMode::EnableBacklog);
}
@@ -528,22 +529,22 @@ TEST_CASE("JobQueue")
RemainingJobs.reserve(Statuses.size());
for (const auto& It : Statuses)
{
- JobQueue::Status Status = It.Status;
+ JobQueue::JobStatus Status = It.Status;
JobId Id = It.Id;
std::optional<JobQueue::JobDetails> CurrentState;
- if (Status != JobQueue::Status::Queued)
+ if (Status != JobQueue::JobStatus::Queued)
{
CurrentState = Queue->Get(Id);
CHECK(CurrentState.has_value());
}
switch (Status)
{
- case JobQueue::Status::Queued:
+ case JobQueue::JobStatus::Queued:
PendingCount++;
RemainingJobs.push_back(Id);
break;
- case JobQueue::Status::Running:
+ case JobQueue::JobStatus::Running:
ZEN_DEBUG(
"{} running. '{}{}' {}% '{}'",
Id.Id,
@@ -556,10 +557,10 @@ TEST_CASE("JobQueue")
Join(CurrentState->State.Messages, " "sv));
RemainingJobs.push_back(Id);
break;
- case JobQueue::Status::Aborted:
+ case JobQueue::JobStatus::Aborted:
ZEN_DEBUG("{} aborted. Reason: '{}'", Id.Id, CurrentState->State.AbortReason);
break;
- case JobQueue::Status::Completed:
+ case JobQueue::JobStatus::Completed:
ZEN_DEBUG("{} completed. '{}'", Id.Id, Join(CurrentState->State.Messages, " "sv));
break;
default: