From 0e3c2e8dd462a7d56f8b61e15c8cf10681898a1f Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 17 Mar 2026 11:11:14 +0000 Subject: Run jobs on a background thread --- src/ingestor.hpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/ingestor.hpp') diff --git a/src/ingestor.hpp b/src/ingestor.hpp index 67a7a15..72417d9 100644 --- a/src/ingestor.hpp +++ b/src/ingestor.hpp @@ -54,7 +54,7 @@ namespace WebStat { void parkLogLine(std::string_view); void runJobsIdle(); - void jobIngestParkedLines(); + unsigned int jobIngestParkedLines(); unsigned int jobPurgeOldLogs(); template void storeLogLine(DB::Connection *, const std::tuple &) const; @@ -70,9 +70,19 @@ namespace WebStat { size_t linesParked = 0; mutable std::flat_set existingEntities; - using JobLastRunTime = std::chrono::system_clock::time_point; - JobLastRunTime lastRunIngestParkedLines; - JobLastRunTime lastRunPurgeOldLogs; + struct Job { + using LastRunTime = std::chrono::system_clock::time_point; + using Impl = unsigned int (Ingestor::*)(); + + explicit Job(Impl impl) : impl(impl) { } + + const Impl impl; + LastRunTime lastRun {LastRunTime::clock::now()}; + std::optional currentRun {std::nullopt}; + }; + + Job ingestParkedLines; + Job purgeOldLogs; private: static constexpr size_t MAX_NEW_ENTITIES = 6; -- cgit v1.3