add a RequestJobBase base class for requests jobs

This commit is contained in:
2023-09-28 07:47:06 +02:00
parent 5e45ad3417
commit e600aebaae
5 changed files with 203 additions and 35 deletions

View File

@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2012-2022, Tomasz Sowa
* Copyright (c) 2012-2023, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -43,7 +43,7 @@
#include "cur.h"
#include "loadavg.h"
#include "mounts.h"
#include "requestjobs/requestjobbase.h"
namespace Winix
@@ -84,6 +84,11 @@ public:
void Add(long job_id, pt::Space & job, size_t priority = PRIORITY_DEFAULT);
void Add(long job_id, Request * request, pt::Space & job, size_t priority = PRIORITY_DEFAULT);
/*
* register a new request job worker
*/
void RegisterRequestJob(long job_id, RequestJobBase & request_job);
/*
queue size, and size of all jobs in any priority
*/
@@ -107,9 +112,10 @@ private:
Mounts * mounts;
std::list<Request> * req_tab;
typedef std::queue<JobTask> JobsQueue;
typedef std::queue<JobTask> JobsQueue;
typedef std::vector<JobsQueue> JobsQueueTab;
JobsQueueTab jobs_queue_tab;
std::multimap<long, RequestJobBase*> request_jobs;
void CheckPriority(size_t & priority) const;
void SaveToFile();
@@ -132,6 +138,7 @@ private:
void DoRequestContinuationJob(JobTask & job_task, size_t priority);
void DoWinixJob(pt::Space & job);
void RemoveOldRequest(Request * request);
PluginRes DoRequestJobs(JobTask & task, long job_id, size_t priority);
};