6#include <icomp/CComponentBase.h>
7#include <iprm/IParamsSet.h>
10#include <imtbase/IProgressSessionsManager.h>
11#include <imtbase/TModelUpdateBinder.h>
12#include <imthype/IJobQueueManager.h>
13#include <imthype/IJobController.h>
14#include <imthype/CStandardJobOutput.h>
15#include <imtbase/CSimpleReferenceCollection.h>
22class CJobControllerCompBase:
public icomp::CComponentBase,
virtual public IJobController
25 typedef CComponentBase BaseClass;
27 I_BEGIN_BASE_COMPONENT(CJobControllerCompBase)
28 I_REGISTER_INTERFACE(IJobController)
29 I_ASSIGN(m_defaultJobTypeIdAttrPtr,
"DefaultJobTypeId",
"Default job type ID",
true,
"");
30 I_ASSIGN(m_progressSessionManagerCompPtr,
"ProgressSessionManager",
"ProgressSessionManager",
false,
"ProgressSessionManager");
31 I_ASSIGN(m_jobQueueManagerCompPtr,
"JobQueueManager",
"Job queue manager",
false,
"JobQueueManager");
32 I_ASSIGN(m_inputCollectionCompPtr,
"InputCollection",
"Input collection",
false,
"InputCollection");
33 I_ASSIGN(m_resultCollectionCompPtr,
"ResultCollection",
"Result collection",
false,
"ResultCollection");
34 I_ASSIGN(m_jobParamsFactPtr ,
"JobParams",
"Job params factory",
false,
"JobParams");
37 CJobControllerCompBase();
40 virtual typename IJobController::RequestStatus BeginJob(
const QByteArray& jobId,
const iprm::IParamsSet* jobParams)
override;
41 virtual istd::IChangeableUniquePtr GetJobResult(
const QByteArray& jobId)
const override;
42 virtual typename IJobController::JobStatus GetJobStatus(
const QByteArray& jobId)
const override;
43 virtual typename IJobController::RequestStatus CancelJob(
const QByteArray& jobId)
override;
44 virtual typename IJobController::RequestStatus RemoveJob(
const QByteArray& jobId)
override;
49 QByteArray queueJobId;
51 iprm::IParamsSetUniquePtr paramsPtr;
52 istd::IChangeableUniquePtr resultPtr;
53 typename IJobController::JobStatus status = IJobController::JS_FAILED;
55 ibase::IProgressManager* jobProgressManagerPtr =
nullptr;
56 std::unique_ptr<ibase::IProgressLogger> progressLoggerPtr;
60 CStandardJobOutput jobOutput;
62 typedef std::shared_ptr<JobInfo> JobInfoPtr;
65 virtual bool PrepareInputObjects(JobInfo& jobInfo) = 0;
66 virtual bool PrepareResult(JobInfo& jobInfo) = 0;
69 void OnComponentCreated()
override;
70 void OnComponentDestroyed()
override;
76 QMap<QByteArray, JobInfoPtr> m_jobs;
77 mutable QRecursiveMutex m_mutex;
80 void OnJobQueueChanged(
81 const istd::IChangeable::ChangeSet& changeset,
const IJobQueueManager* modelPtr);
83 void OnTaskProgressChanged(
const QByteArray& queueJobId,
double progress);
84 QByteArray FindJob(
const QByteArray& queueJobId)
const;
87 I_ATTR(QByteArray, m_defaultJobTypeIdAttrPtr);
89 I_REF(IJobQueueManager, m_jobQueueManagerCompPtr);
90 I_FACT(iprm::IParamsSet, m_jobParamsFactPtr);