/** * @RDE_HEADER@ * The ClientMessage class is an abstract base class for concrete ClientMessage objects * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Fritsche, SLSE, 2017-09-07 */ #pragma once #include #include "logger.h" namespace CombatNetRadio { class ExerciseManager; namespace WebSocketInterface { namespace Messages { class MessageTransmitter; class ClientMessage { public: static ClientMessage *create(const QString &message, NGL::INGLLogger &logger); virtual void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) = 0; virtual bool hasValidData() const = 0; virtual ~ClientMessage() = default; ClientMessage(const QString &type, const QString &uuid, const QJsonObject &data = QJsonObject()); protected: // attributes const QString m_type; const QString m_uuid; const QJsonObject m_data; }; // class ClientMessage class GetEssentialsMessage final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override { return true; } using ClientMessage::ClientMessage; }; // class GetEssentialsMessage class GetConfigCnrMessage final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override { return true; } using ClientMessage::ClientMessage; }; // GetConfigCnrMessage class GetPositionsCnrMessage final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override; using ClientMessage::ClientMessage; }; // PositionsCnrMessage class AliveRequest final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override { return true; } using ClientMessage::ClientMessage; }; class OkMessageC final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override { return true; } using ClientMessage::ClientMessage; }; class ConfigCnrMessageC final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override { return true; } using ClientMessage::ClientMessage; }; // ConfigCnrMessageC class InvalidMessage final : public ClientMessage { friend class ClientMessage; public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override; using ClientMessage::ClientMessage; private: // attributes QString m_errorText; }; // class InvalidMessage } // namespace Messages } // namespace WebSocketInterface } // namespace CombatNetRadio