diff options
| author | Stefan Boberg <[email protected]> | 2025-11-01 14:04:35 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-11-01 14:04:35 +0100 |
| commit | a58da97f98697580bf128ed5723ba720cc30f0dc (patch) | |
| tree | 798e392ddf76128a506293dc0803aaf852203dcd /src/zencore/jobqueue.cpp | |
| parent | fix use-after-free in TEST_CASE("compactcas.threadedinsert") (#620) (diff) | |
| download | zen-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.cpp | 43 |
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: |