6#include <ibase/CCumulatedProgressManagerBase.h>
9#include <imtservergql/CGqlPublisherCompBase.h>
10#include <imtbase/IProgressSessionsManager.h>
17class CProgressManagerPublisherComp:
18 public CGqlPublisherCompBase,
22 typedef CGqlPublisherCompBase BaseClass;
24 I_BEGIN_COMPONENT(CProgressManagerPublisherComp)
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;
37 bool PublishSession(
const QByteArray& sessionId);
40 class ProgressManagerSession :
public ibase::CCumulatedProgressManagerBase
42 friend CProgressManagerPublisherComp;
45 ProgressManagerSession(
46 CProgressManagerPublisherComp& parent,
const QByteArray& sessionId,
const QString& description);
50 void OnProgressChanged(
double cumulatedValue)
override;
53 CProgressManagerPublisherComp& m_parent;
54 const QByteArray m_sessionId;
55 QString m_description;
60 typedef std::shared_ptr<ProgressManagerSession> ProgressManagerSessionPtr;
63 QRecursiveMutex m_mutex;
65 QMap<QByteArray, ProgressManagerSessionPtr> m_progressSessions;