ImagingTools Core SDK
TSubscriberCompWrap.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 <ilog/TLoggerCompWrap.h>
7
8// ImtCore includes
9#include <imtgql/CGqlRequest.h>
10#include <imtclientgql/IGqlSubscriptionManager.h>
11
12
13namespace imtclientgql
14{
15
16
17template <class Base>
18class TSubscriberCompWrap:
19 public Base,
20 virtual public IGqlSubscriptionClient
21{
22public:
23 typedef Base BaseClass;
24
25 I_BEGIN_COMPONENT(TSubscriberCompWrap);
26 I_REGISTER_INTERFACE(imtclientgql::IGqlSubscriptionClient);
27 I_ASSIGN(m_subscriptionManagerCompPtr, "SubscriptionManager", "Subscription manager", true, "SubscriptionManager");
28 I_ASSIGN(m_commandAttrPtr, "Command", "Command for subscription", true, "");
29 I_END_COMPONENT;
30
31protected:
32 virtual void RegisterSubscription();
33
34 // reimplemented (imtgql::IGqlSubscriptionClient)
35 virtual void OnResponseReceived(
36 const QByteArray& subscriptionId,
37 const QByteArray& subscriptionData) override;
38 virtual void OnSubscriptionStatusChanged(
39 const QByteArray& subscriptionId,
40 const SubscriptionStatus& status,
41 const QString& message) override;
42
43protected:
44 QByteArray m_subscriptionId;
45
46protected:
47 I_REF(imtclientgql::IGqlSubscriptionManager, m_subscriptionManagerCompPtr);
48 I_ATTR(QByteArray, m_commandAttrPtr);
49};
50
51
52// protected methods
53
54template<class Base>
55void TSubscriberCompWrap<Base>::RegisterSubscription()
56{
57 if (m_subscriptionManagerCompPtr.IsValid()){
58 imtgql::CGqlRequest gqlRequest(imtgql::IGqlRequest::RT_SUBSCRIPTION, *m_commandAttrPtr);
59
60 // imtgql::CGqlParamObject subscriptionField;
61 // subscriptionField.InsertParam("id", "");
62 // gqlRequest.AddField("data", subscriptionField);
63
64 m_subscriptionId = m_subscriptionManagerCompPtr->RegisterSubscription(gqlRequest, this);
65 }
66}
67
68
69// reimplemented (imtgql::IGqlSubscriptionClient)
70
71template<class Base>
72void TSubscriberCompWrap<Base>::OnResponseReceived(
73 const QByteArray& /*subscriptionId*/,
74 const QByteArray& /*subscriptionData*/)
75{
76}
77
78
79template<class Base>
80void TSubscriberCompWrap<Base>::OnSubscriptionStatusChanged(
81 const QByteArray& /*subscriptionId*/,
82 const SubscriptionStatus& /*status*/,
83 const QString& /*message*/)
84{
85}
86
87
88} // namespace imtclientgql
89
90