ImagingTools Core SDK
CProgressManagerPublisherComp.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// ACF includes
6#include <ibase/CCumulatedProgressManagerBase.h>
7
8// ImtCore includes
9#include <imtservergql/CGqlPublisherCompBase.h>
10#include <imtbase/IProgressSessionsManager.h>
11
12
13namespace imtservergql
14{
15
16
17class CProgressManagerPublisherComp:
18 public CGqlPublisherCompBase,
20{
21public:
22 typedef CGqlPublisherCompBase BaseClass;
23
24 I_BEGIN_COMPONENT(CProgressManagerPublisherComp)
25 I_REGISTER_INTERFACE(imtbase::IProgressSessionsManager);
26 I_END_COMPONENT;
27
28 // reimplemented (imtbase::IProgressSessionsManager)
29 virtual ibase::IProgressManager* BeginProgressSession(const QByteArray& sessionId, const QString& description) override;
30 virtual bool EndProgressSession(const QByteArray& sessionId) override;
31 virtual bool CancelProgressSession(
32 const QByteArray& sessionId,
33 const QString& description = QString(),
34 bool isFailed = false) override;
35
36private:
37 bool PublishSession(const QByteArray& sessionId);
38
39private:
40 class ProgressManagerSession : public ibase::CCumulatedProgressManagerBase
41 {
42 friend CProgressManagerPublisherComp;
43
44 public:
45 ProgressManagerSession(
46 CProgressManagerPublisherComp& parent, const QByteArray& sessionId, const QString& description);
47
48 protected:
49 // reimplemented (CCumulatedProgressManagerBase)
50 void OnProgressChanged(double cumulatedValue) override;
51
52 protected:
53 CProgressManagerPublisherComp& m_parent;
54 const QByteArray m_sessionId;
55 QString m_description;
56 bool m_isFailed;
57 bool m_isCompleted;
58 };
59
60 typedef std::shared_ptr<ProgressManagerSession> ProgressManagerSessionPtr;
61
62private:
63 QRecursiveMutex m_mutex;
64
65 QMap<QByteArray, ProgressManagerSessionPtr> m_progressSessions;
66};
67
68
69} // namespace imtservergql
70
71