From 5b4eb8db8bf613d6d916f4ca23f4d4028ea21744 Mon Sep 17 00:00:00 2001 From: emeric Date: Tue, 2 Jun 2026 17:22:33 +0200 Subject: [PATCH] Small clean up for the job queue creation --- src/libs/services/scanner/impl/steps/JobQueue.cpp | 8 ++++---- src/libs/services/scanner/impl/steps/JobQueue.hpp | 11 ++++++++--- .../impl/steps/ScanStepAssociateArtistImages.cpp | 2 +- .../impl/steps/ScanStepAssociateMediumImages.cpp | 2 +- .../impl/steps/ScanStepAssociatePlayListImages.cpp | 2 +- .../impl/steps/ScanStepAssociatePlayListTracks.cpp | 2 +- .../impl/steps/ScanStepAssociateReleaseImages.cpp | 2 +- .../impl/steps/ScanStepAssociateTrackImages.cpp | 2 +- .../impl/steps/ScanStepCheckForRemovedFiles.cpp | 2 +- .../impl/steps/ScanStepExtractMusicNNEmbeddings.cpp | 2 +- .../services/scanner/impl/steps/ScanStepScanFiles.cpp | 2 +- 11 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/libs/services/scanner/impl/steps/JobQueue.cpp b/src/libs/services/scanner/impl/steps/JobQueue.cpp index aa5db125..0678260e 100644 --- a/src/libs/services/scanner/impl/steps/JobQueue.cpp +++ b/src/libs/services/scanner/impl/steps/JobQueue.cpp @@ -26,12 +26,12 @@ namespace lms::scanner { - JobQueue::JobQueue(core::IJobScheduler& scheduler, std::size_t maxQueueSize, ProcessFunction processJobsDoneFunc, std::size_t batchSize, float _drainThreshold) + JobQueue::JobQueue(core::IJobScheduler& scheduler, ProcessFunction processJobsDoneFunc, JobQueueParameters params) : _scheduler{ scheduler } - , _maxQueueSize{ maxQueueSize } + , _maxQueueSize{ params.maxQueueSize } , _processJobsDoneFunc{ std::move(processJobsDoneFunc) } - , _batchSize{ batchSize } - , _drainThreshold{ _drainThreshold } + , _batchSize{ params.processBatchSize } + , _drainThreshold{ params.drainThreshold } { assert(_scheduler.getJobsDoneCount() == 0); } diff --git a/src/libs/services/scanner/impl/steps/JobQueue.hpp b/src/libs/services/scanner/impl/steps/JobQueue.hpp index db68727f..7d8d0320 100644 --- a/src/libs/services/scanner/impl/steps/JobQueue.hpp +++ b/src/libs/services/scanner/impl/steps/JobQueue.hpp @@ -32,14 +32,19 @@ namespace lms::core namespace lms::scanner { + struct JobQueueParameters + { + std::size_t maxQueueSize = 20; + std::size_t processBatchSize = 1; // processBatchSize -> how many jobs done to notify at once using processJobsDoneFunc + float drainThreshold = 0.85F; // drainThreshold: fraction of maxQueueSize at which completed jobs are processed + }; + class JobQueue { public: using ProcessFunction = std::function>)>; - // processBatchSize -> how many jobs done to notify at once using processJobsDoneFunc - // drainThreshold: fraction of maxQueueSize at which completed jobs are processed - JobQueue(core::IJobScheduler& scheduler, std::size_t maxQueueSize, ProcessFunction processJobsDoneFunc, std::size_t processBatchSize, float drainThreshold); + JobQueue(core::IJobScheduler& scheduler, ProcessFunction processJobsDoneFunc, JobQueueParameters params = {}); ~JobQueue(); JobQueue(const JobQueue&) = delete; JobQueue& operator=(const JobQueue&) = delete; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateArtistImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateArtistImages.cpp index 8099e59a..c5d9bf13 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateArtistImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateArtistImages.cpp @@ -381,7 +381,7 @@ namespace lms::scanner }; { - JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F }; + JobQueue queue{ getJobScheduler(), processJobsDone }; db::ArtistId lastRetrievedArtistId{}; db::IdRange artistIdRange; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateMediumImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateMediumImages.cpp index 2bbcb7ee..2ca7b5bb 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateMediumImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateMediumImages.cpp @@ -294,7 +294,7 @@ namespace lms::scanner }; { - JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F }; + JobQueue queue{ getJobScheduler(), processJobsDone }; db::MediumId lastRetrievedMediumId{}; db::IdRange mediumIdRange; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListImages.cpp index 40c4d8bf..9f8dee13 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListImages.cpp @@ -183,7 +183,7 @@ namespace lms::scanner }; { - JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F }; + JobQueue queue{ getJobScheduler(), processJobsDone }; db::PlayListFileId lastRetrievedId{}; db::IdRange idRange; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListTracks.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListTracks.cpp index e6887248..00652ace 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListTracks.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListTracks.cpp @@ -291,7 +291,7 @@ namespace lms::scanner }; { - JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F }; + JobQueue queue{ getJobScheduler(), processJobsDone }; db::PlayListFileId lastPlayListFileId; db::IdRange playListFileIdRange; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp index fb06c839..341366a7 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp @@ -313,7 +313,7 @@ namespace lms::scanner _progressCallback(context.currentStepStats); }; - JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F }; + JobQueue queue{ getJobScheduler(), processJobsDone }; db::ReleaseId lastRetrievedReleaseId{}; db::IdRange artistIdRange; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateTrackImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateTrackImages.cpp index ddf683bf..7df1fad8 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateTrackImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateTrackImages.cpp @@ -250,7 +250,7 @@ namespace lms::scanner }; { - JobQueue queue{ getJobScheduler(), 20, processTracks, 1, 0.85F }; + JobQueue queue{ getJobScheduler(), processTracks }; db::TrackId lastRetrievedTrackId; db::IdRange trackIdRange; diff --git a/src/libs/services/scanner/impl/steps/ScanStepCheckForRemovedFiles.cpp b/src/libs/services/scanner/impl/steps/ScanStepCheckForRemovedFiles.cpp index 1984ed67..2cc78db1 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepCheckForRemovedFiles.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepCheckForRemovedFiles.cpp @@ -250,7 +250,7 @@ namespace lms::scanner }; { - JobQueue queue{ getJobScheduler(), 50, processJobsDone, 1, 0.85F }; + JobQueue queue{ getJobScheduler(), processJobsDone, { .maxQueueSize = 50 } }; ObjectIdType lastCheckedId; std::vector> filesToCheck; diff --git a/src/libs/services/scanner/impl/steps/ScanStepExtractMusicNNEmbeddings.cpp b/src/libs/services/scanner/impl/steps/ScanStepExtractMusicNNEmbeddings.cpp index 6ac646aa..e4499be4 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepExtractMusicNNEmbeddings.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepExtractMusicNNEmbeddings.cpp @@ -214,7 +214,7 @@ namespace lms::scanner } }; { - JobQueue queue{ getJobScheduler(), 50, processResults, 1, 0.85F }; + JobQueue queue{ getJobScheduler(), processResults, { .maxQueueSize = 50 } }; db::TrackId lastRetrievedTrackId; TrackLocation trackLocation; diff --git a/src/libs/services/scanner/impl/steps/ScanStepScanFiles.cpp b/src/libs/services/scanner/impl/steps/ScanStepScanFiles.cpp index e011f643..637fe694 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepScanFiles.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepScanFiles.cpp @@ -209,7 +209,7 @@ namespace lms::scanner }; { - JobQueue queue{ getJobScheduler(), scanQueueMaxSize, processDoneJobs, processFileResultsBatchSize, drainRatio }; + JobQueue queue{ getJobScheduler(), processDoneJobs, { .maxQueueSize = scanQueueMaxSize, .processBatchSize = processFileResultsBatchSize, .drainThreshold = drainRatio } }; std::vector filesToScan;