ImagingTools Core SDK
CPluginBasedJobQueueManagerComp.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/QMap>
7
8
9// ACF includes
10#include <iprm/COptionsManager.h>
11
12// ImtCore includes
13#include <imtbase/PluginInterface.h>
14#include <imtbase/TPluginManagerCompBase.h>
15
16// Acula includes
17#include <imthype/CJobQueueManagerCompBase.h>
18#include <imthype/ITaskParamsPlugin.h>
19
20
21IMT_DECLARE_PLUGIN_INTERFACE(TaskParamSet, imthype::ITaskParamsPlugin);
22
23
24namespace imthype
25{
26
27
28class CPluginBasedJobQueueManagerComp:
29 public imtbase::TPluginManagerCompBase<
30 imthype::ITaskParamsPlugin,
31 IMT_CREATE_PLUGIN_FUNCTION(TaskParamSet),
32 IMT_DESTROY_PLUGIN_FUNCTION(TaskParamSet),
33 CJobQueueManagerCompBase>
34{
35 using CJobQueueManagerCompBase::SendCriticalMessage;
36public:
37 typedef imtbase::TPluginManagerCompBase<
39 IMT_CREATE_PLUGIN_FUNCTION(TaskParamSet),
40 IMT_DESTROY_PLUGIN_FUNCTION(TaskParamSet),
41 CJobQueueManagerCompBase> BaseClass;
42
43 I_BEGIN_COMPONENT(CPluginBasedJobQueueManagerComp);
44 I_END_COMPONENT;
45
46 CPluginBasedJobQueueManagerComp();
47
48 // reimplemented (IJobQueueManager)
49 virtual const iprm::IOptionsList* GetSupportedTasks() const override;
50 virtual iprm::IParamsSetUniquePtr CreateJobParameters(
51 const QByteArray& contextId,
52 const QByteArray& taskTypeId,
53 const iprm::IParamsSet* defaultParamPtr) const override;
54
55protected:
56 // reimplemented (TPluginManagerCompBase)
57 virtual void OnPluginsCreated();
58
59private:
60 typedef QMap<QByteArray, imthype::ITaskParamsPlugin*> PluginsMap;
61 PluginsMap m_pluginsMap;
62
63 imod::TModelWrap<iprm::COptionsManager> m_taskParamsFactories;
64};
65
66
67} // namespace imthype
68
69