6#include <imtrest/CHttpRootServletComp.h>
7#include <imtrest/IResponseDispatcher.h>
8#include <imtgql/IGqlSubscriberController.h>
9#include <imtgql/IGqlRequestHandler.h>
16class CWebSocketServletComp:
17 public ilog::CLoggerComponentBase,
18 virtual public imtrest::IRequestServlet,
22 typedef ilog::CLoggerComponentBase BaseClass;
24 I_BEGIN_COMPONENT(CWebSocketServletComp);
25 I_REGISTER_INTERFACE(IRequestServlet);
26 I_ASSIGN_MULTI_0(m_gqlSubscriberControllersCompPtr,
"GqlSubscriberControllers",
"List of gql subscriber controller for corresponding command-IDs",
false);
27 I_ASSIGN(m_workerManagerCompPtr,
"WorkerManager",
"GraphQl multithread worker manager",
false,
"WorkerManager");
31 virtual bool IsCommandSupported(
const QByteArray& commandId)
const override;
32 virtual imtrest::ConstResponsePtr ProcessRequest(
const imtrest::IRequest& request,
const QByteArray& subCommandId = QByteArray())
const override;
35 virtual bool SendResponse(
const QByteArray& requestId, imtrest::ConstResponsePtr& response)
const override;
36 virtual bool SendRequest(
const QByteArray& requestId, imtrest::ConstRequestPtr& request)
const override;
39 virtual imtrest::ConstResponsePtr InitConnection(
const imtrest::IRequest& request)
const;
40 virtual imtrest::ConstResponsePtr KeepAliveAcknowledge(
const imtrest::IRequest& request)
const;
41 virtual imtrest::ConstResponsePtr ProcessGqlRequest(
const imtrest::IRequest& request)
const;
42 virtual imtrest::ConstResponsePtr RegisterSubscription(
const imtrest::IRequest& request)
const;
43 virtual imtrest::ConstResponsePtr UnregisterSubscription(
const imtrest::IRequest& request)
const;
44 virtual imtrest::ConstResponsePtr CreateDataResponse(
const QByteArray& data,
const imtrest::IRequest& request)
const;
45 virtual imtrest::ConstResponsePtr CreateErrorResponse(
const QByteArray& errorMessage,
const imtrest::IRequest& request)
const;
48 I_MULTIREF(imtgql::IGqlSubscriberController, m_gqlSubscriberControllersCompPtr);
49 I_REF(imtrest::IRequestServlet, m_workerManagerCompPtr);
51 typedef QMap<QByteArray, imtgql::IGqlSubscriberController*> SubscriberControllersMap;
53 SubscriberControllersMap m_subscriberControllersMap;
54 mutable QMutex m_subscriberControllersMapMutex;