ImagingTools Core SDK
IJobQueueManager.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QByteArray>
7#include <QtCore/QList>
8
9// ImtCore includes
10#include <imtbase/ICollectionInfo.h>
11#include <imtbase/IReferenceCollection.h>
12
13
14namespace iprm
15{
16 class IParamsSet;
17 class IOptionsList;
18}
19
20
21namespace ilog
22{
23 class IMessageConsumer;
24}
25
26
27
28namespace imthype
29{
30
31
32class IJobSchedulerParams;
33class IJobOutput;
34
35
41{
42public:
43 typedef iprm::IParamsSetSharedPtr ParamsPtr;
44
49 {
54
59
64
69
74
79
84
89
95 };
96
98
99 struct JobStatusInfo: public NotifierInfo
100 {
101 ProcessingStatus status;
102 };
103 static const QByteArray CN_JOB_STATUS_CHANGED;
104
105 struct JobProgressInfo : public NotifierInfo
106 {
107 double progress;
108 };
109 static const QByteArray CN_JOB_PROGRESS_CHANGED;
110
111 typedef NotifierInfo JobResultInfo;
112 static const QByteArray CN_JOB_RESULT_CHANGED;
113
118 {
123
127 JF_CANCELABLE = 2
128 };
129
133 virtual const iprm::IOptionsList* GetSupportedTasks() const = 0;
134
138 virtual QByteArray GetTaskTypeId(const QByteArray& jobId) const = 0;
139
143 virtual iprm::IParamsSetUniquePtr CreateJobParameters(
144 const QByteArray& contextId,
145 const QByteArray& taskTypeId,
146 const iprm::IParamsSet* defaultParamPtr) const = 0;
147
159 virtual QByteArray InsertNewJobIntoQueue(
160 const QByteArray& contextId,
161 const QByteArray& typeId,
163 const iprm::IParamsSet* jobProcessingParamsPtr,
164 const IJobSchedulerParams* schedulerParamsPtr = nullptr,
165 ilog::IMessageConsumer* logPtr = nullptr) = 0;
166
172 virtual bool CancelJob(const QByteArray& jobId) = 0;
173
181 virtual bool ResumeJob(const QByteArray& jobId) = 0;
182
188 virtual bool RemoveJob(const QByteArray& jobId) = 0;
189
194 const QByteArray& jobId,
195 ParamsPtr& processingParamsPtr,
196 imtbase::IReferenceCollection& input) const = 0;
197
201 virtual ProcessingStatus GetProcessingStatus(const QByteArray& jobId) const = 0;
202
206 virtual bool SetProcessingStatus(const QByteArray& jobId, ProcessingStatus status) = 0;
207
211 virtual double GetProgress(const QByteArray& jobId) const = 0;
212
216 virtual bool SetProgress(const QByteArray& jobId, double progress) = 0;
217
223 virtual bool GetJobResult(const QByteArray& jobId, IJobOutput& result) const = 0;
224
230 virtual bool SetJobResult(const QByteArray& jobId, const IJobOutput& result) = 0;
231};
232
233
234} // namespace imthype
235
236
237Q_DECLARE_METATYPE(imthype::IJobQueueManager::JobStatusInfo);
238Q_DECLARE_METATYPE(imthype::IJobQueueManager::JobProgressInfo);
239
virtual bool GetJobResult(const QByteArray &jobId, IJobOutput &result) const =0
virtual ProcessingStatus GetProcessingStatus(const QByteArray &jobId) const =0
virtual const iprm::IOptionsList * GetSupportedTasks() const =0
virtual iprm::IParamsSetUniquePtr CreateJobParameters(const QByteArray &contextId, const QByteArray &taskTypeId, const iprm::IParamsSet *defaultParamPtr) const =0
virtual bool GetJobConfiguration(const QByteArray &jobId, ParamsPtr &processingParamsPtr, imtbase::IReferenceCollection &input) const =0
virtual bool SetProcessingStatus(const QByteArray &jobId, ProcessingStatus status)=0
virtual QByteArray GetTaskTypeId(const QByteArray &jobId) const =0
virtual bool SetProgress(const QByteArray &jobId, double progress)=0
virtual bool ResumeJob(const QByteArray &jobId)=0
virtual bool SetJobResult(const QByteArray &jobId, const IJobOutput &result)=0
virtual bool CancelJob(const QByteArray &jobId)=0
virtual double GetProgress(const QByteArray &jobId) const =0
virtual bool RemoveJob(const QByteArray &jobId)=0
virtual QByteArray InsertNewJobIntoQueue(const QByteArray &contextId, const QByteArray &typeId, const imtbase::IReferenceCollection &input, const iprm::IParamsSet *jobProcessingParamsPtr, const IJobSchedulerParams *schedulerParamsPtr=nullptr, ilog::IMessageConsumer *logPtr=nullptr)=0