Small clean up for the job queue creation
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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<void(std::span<std::unique_ptr<core::IJob>>)>;
|
||||
|
||||
// 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;
|
||||
|
||||
@@ -381,7 +381,7 @@ namespace lms::scanner
|
||||
};
|
||||
|
||||
{
|
||||
JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F };
|
||||
JobQueue queue{ getJobScheduler(), processJobsDone };
|
||||
|
||||
db::ArtistId lastRetrievedArtistId{};
|
||||
db::IdRange<db::ArtistId> artistIdRange;
|
||||
|
||||
@@ -294,7 +294,7 @@ namespace lms::scanner
|
||||
};
|
||||
|
||||
{
|
||||
JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F };
|
||||
JobQueue queue{ getJobScheduler(), processJobsDone };
|
||||
|
||||
db::MediumId lastRetrievedMediumId{};
|
||||
db::IdRange<db::MediumId> mediumIdRange;
|
||||
|
||||
@@ -183,7 +183,7 @@ namespace lms::scanner
|
||||
};
|
||||
|
||||
{
|
||||
JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F };
|
||||
JobQueue queue{ getJobScheduler(), processJobsDone };
|
||||
|
||||
db::PlayListFileId lastRetrievedId{};
|
||||
db::IdRange<db::PlayListFileId> idRange;
|
||||
|
||||
@@ -291,7 +291,7 @@ namespace lms::scanner
|
||||
};
|
||||
|
||||
{
|
||||
JobQueue queue{ getJobScheduler(), 20, processJobsDone, 1, 0.85F };
|
||||
JobQueue queue{ getJobScheduler(), processJobsDone };
|
||||
|
||||
db::PlayListFileId lastPlayListFileId;
|
||||
db::IdRange<db::PlayListFileId> playListFileIdRange;
|
||||
|
||||
@@ -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<db::ReleaseId> artistIdRange;
|
||||
|
||||
@@ -250,7 +250,7 @@ namespace lms::scanner
|
||||
};
|
||||
|
||||
{
|
||||
JobQueue queue{ getJobScheduler(), 20, processTracks, 1, 0.85F };
|
||||
JobQueue queue{ getJobScheduler(), processTracks };
|
||||
|
||||
db::TrackId lastRetrievedTrackId;
|
||||
db::IdRange<db::TrackId> trackIdRange;
|
||||
|
||||
@@ -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<FileToCheck<ObjectIdType>> filesToCheck;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<std::filesystem::directory_entry> filesToScan;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user