6#include <ilog/TLoggerCompWrap.h>
7#include <iqt/ITranslationManager.h>
10#include <imtrest/CWebSocketRequest.h>
11#include <imtrest/IResponseDispatcher.h>
12#include <imtgql/IGqlRequestHandler.h>
13#include <imtgql/IGqlSubscriberController.h>
20class CGqlPublisherCompBase:
21 public ilog::CLoggerComponentBase,
22 virtual public imtgql::IGqlSubscriberController,
23 virtual public imtrest::IRequestEventHandler
26 typedef ilog::CLoggerComponentBase BaseClass;
28 I_BEGIN_BASE_COMPONENT(CGqlPublisherCompBase);
29 I_REGISTER_INTERFACE(imtgql::IGqlSubscriberController);
30 I_ASSIGN_MULTI_0(m_commandIdsAttrPtr,
"CommandIds",
"List of model-IDs for GraphQL-response",
true);
31 I_ASSIGN(m_requestManagerCompPtr,
"RequestManager",
"Response dispatcher registered for the server",
true,
"RequestManager");
35 virtual bool IsRequestSupported(
const imtgql::CGqlRequest& gqlRequest)
const override;
36 virtual bool RegisterSubscription(
37 const QByteArray& subscriptionId,
38 const imtgql::CGqlRequest& gqlRequest,
40 QString& errorMessage)
override;
41 virtual bool UnregisterSubscription(
const QByteArray& subscriptionId)
override;
47 virtual bool PushDataToSubscriber(
const QByteArray& subscriptionId,
const QByteArray& commandId,
const QByteArray& data,
const imtrest::IRequest& networkRequest,
const bool useAwsStyle =
true)
const;
48 virtual bool PublishData(
const QByteArray& commandId,
const QByteArray& data)
const;
49 virtual bool PublishDataFiltered(
50 const QByteArray& commandId,
51 const QByteArray& data,
52 std::function<
bool(
const imtgql::CGqlRequest&)> predicate)
const;
55 I_MULTIATTR(QByteArray, m_commandIdsAttrPtr);
58 struct RequestNetworks
60 imtgql::CGqlRequest gqlRequest;
61 QMap<QByteArray, const imtrest::IRequest*> networkRequests;
64 :gqlRequest(imtgql::IGqlRequest::RT_SUBSCRIPTION)
69 mutable QList<RequestNetworks> m_registeredSubscribers;
70 mutable QMutex m_mutex;