#pragma once #include "logger.h" #include 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; }; } // namespace LtsProjectionWorkstation