/** * @RDE_HEADER@ * LTS web socket server - Abstract Client Message * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, SLST, 2017-11-28 */ #pragma once #include #include "reply_message.h" #include #include namespace LtsWebSocket { /** * @brief API for client message implementations that are needed by the LtsWebSocketServer */ class LTSWEBSOCKETCOMMON_EXPORT AbstractClientMessage { public: AbstractClientMessage(ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data = QJsonValue()) : m_type(type) , m_typeId(typeId) , m_uuid(uuid) , m_data(data) , m_client(client) {} virtual ~AbstractClientMessage() = default; /** * @brief process Processes the messages data */ virtual void process() = 0; /** * @brief hasValidData Validates the content of the message * @return True if the message is ICD conform, otherwise false */ virtual bool hasValidData() const = 0; /** * @brief reply Send a Reply to the client that has send this message * @param reply */ void reply(ReplyMessage *reply) { m_client->addReply(reply); } protected: // attributes const QString m_type; const int m_typeId; const QString m_uuid; const QJsonValue m_data; ReplyHandler *m_client; }; // class AbstractClientMessage // #################### basic error messages #################### /** * @brief The InvalidMessage class represents any message from the client which either could * not be validated, is not JSON conform or has no type or uuid */ class LTSWEBSOCKETCOMMON_EXPORT InvalidMessage final : public AbstractClientMessage { public: explicit InvalidMessage(ReplyHandler *client, const QString &uuid, const QString &errorText); void process() override; bool hasValidData() const override; private: // attributes QString m_errorText; }; // class InvalidMessage } // namespace LtsWebSocket