ImagingTools Core SDK
CPluginBasedJobExecutionComp.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// ImtCore includes
9#include <imtbase/PluginInterface.h>
10#include <imtbase/TPluginManagerCompBase.h>
11
12// Acula includes
13#include <imthype/CJobExecutionControllerCompBase.h>
14#include <imthype/IJobProcessorPlugin.h>
15
16
17IMT_DECLARE_PLUGIN_INTERFACE(JobProcessor, imthype::IJobProcessorPlugin);
18
19
20namespace imthype
21{
22
23
24class CPluginBasedJobExecutionComp:
25 public imtbase::TPluginManagerCompBase<
26 imthype::IJobProcessorPlugin,
27 IMT_CREATE_PLUGIN_FUNCTION(JobProcessor),
28 IMT_DESTROY_PLUGIN_FUNCTION(JobProcessor),
29 CJobExecutionControllerCompBase>
30{
31 using CJobExecutionControllerCompBase::SendCriticalMessage;
32public:
33 typedef imtbase::TPluginManagerCompBase<
35 IMT_CREATE_PLUGIN_FUNCTION(JobProcessor),
36 IMT_DESTROY_PLUGIN_FUNCTION(JobProcessor),
37 CJobExecutionControllerCompBase> BaseClass;
38
39 I_BEGIN_COMPONENT(CPluginBasedJobExecutionComp);
40 I_END_COMPONENT;
41
42 CPluginBasedJobExecutionComp();
43
44protected:
45 // reimplemented (CJobExecutionControllerCompBase)
46 virtual const IJobProcessor* GetTaskProcessor(const QByteArray& workerTypeId) const override;
47
48 // reimplemented (TPluginManagerCompBase)
49 virtual void OnPluginsCreated();
50
51private:
52 typedef QMap<QByteArray, imthype::IJobProcessorPlugin*> PluginsMap;
53 PluginsMap m_pluginsMap;
54
55 typedef IJobProcessorSharedPtr JobProcessorPtr;
56 typedef QMap<QByteArray, JobProcessorPtr> JobProcessorMap;
57
58 mutable JobProcessorMap m_jobProcessorMap;
59};
60
61
62} // namespace imthype
63
64