6#include <QtCore/QTimer>
7#include <QtCore/QThreadPool>
8#include <QtCore/QRunnable>
12#include <ibase/CCumulatedProgressManagerBase.h>
13#include <ilog/TLoggerCompWrap.h>
14#include <iprm/IParamsSet.h>
17#include <imtbase/TModelUpdateBinder.h>
18#include <imthype/IJobProcessor.h>
19#include <imthype/IJobQueueManager.h>
20#include <imthype/CStandardJobOutput.h>
37 typedef ilog::CLoggerComponentBase BaseClass;
40 I_ASSIGN(m_jobQueueManagerCompPtr,
"JobQueueManager",
"Manager for the job queue",
true,
"JobQueueManager");
46 virtual void ShutdownAllTasks();
48 class JobProgressManager :
public ibase::CCumulatedProgressManagerBase
54 virtual void OnProgressChanged(
double cumulatedValue)
override;
61 typedef std::shared_ptr<JobProgressManager> JobProgressManagerPtr;
63 class Task:
public QRunnable
68 const QByteArray& jobId,
71 iprm::IParamsSetSharedPtr paramsPtr,
72 JobProgressManager* progressPtr);
81 CStandardJobOutput m_jobOutput;
82 imtbase::IReferenceCollectionSharedPtr m_inputPtr;
83 iprm::IParamsSetSharedPtr m_paramsPtr;
84 JobProgressManager* m_progressPtr;
89 virtual void OnComponentCreated()
override;
90 virtual void OnComponentDestroyed()
override;
97 void OnJobFinished(
const QByteArray& jobId,
const imthype::CStandardJobOutput& results);
98 void OnJobProgressChanged(
const QByteArray& jobId,
double progress);
101 void EmitJobFinished(
const QByteArray& jobId,
const imthype::CStandardJobOutput& results);
102 void EmitJobProgressChanged(
const QByteArray& jobId,
double progress);
126 QTimer m_updateJobQueueTimer;
136 QThreadPool m_threadPool;
138 QMap<QByteArray, JobProgressManagerPtr> m_jobProgressList;
virtual const IJobProcessor * GetTaskProcessor(const QByteArray &workerTypeId) const =0