#pragma once #include #include "logger.h" namespace LtsProjectionWorkstation { class MessageHandler; class ClientMessageFactory : public LtsWebSocket::AbstractClientMessageFactory { public: explicit ClientMessageFactory(MessageHandler *messageHandler) : LtsWebSocket::AbstractClientMessageFactory(getLogger("ClientMessageFactory")) , m_messageHandler(messageHandler) {} LtsWebSocket::AbstractClientMessage *createMessage(LtsWebSocket::ReplyHandler *client, const QString &message) override final; private: MessageHandler *m_messageHandler; }; class ClientMessage : public LtsWebSocket::AbstractClientMessage { public: explicit ClientMessage(MessageHandler *messageHandler, LtsWebSocket::ReplyHandler *client, const QString &type, const QString &uuid, const QJsonValue &data) : AbstractClientMessage(client, type, uuid, data) , m_messageHandler(messageHandler) {} protected: MessageHandler *m_messageHandler; }; class LoginRequest : public ClientMessage { public: explicit LoginRequest(MessageHandler *messageHandler, LtsWebSocket::ReplyHandler *client, const QString &type, const QString &uuid, const QJsonValue &data) : ClientMessage(messageHandler, client, type, uuid, data) {} void process(); bool hasValidData() const; }; class LogoutRequest : public ClientMessage { public: explicit LogoutRequest(MessageHandler *messageHandler, LtsWebSocket::ReplyHandler *client, const QString &type, const QString &uuid, const QJsonValue &data) : ClientMessage(messageHandler, client, type, uuid, data) {} void process(); bool hasValidData() const; }; }