#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: const QString m_type; const QString m_uuid; const QJsonObject m_data; }; class GetEssentialsMessage final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override { return true; } using ClientMessage::ClientMessage; }; class GetConfigCnrMessage final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override { return true; } using ClientMessage::ClientMessage; }; class GetPositionsCnrMessage final : public ClientMessage { public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override; using ClientMessage::ClientMessage; }; 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; }; class InvalidMessage final : public ClientMessage { friend class ClientMessage; public: void process(ExerciseManager *exerciseManager, MessageTransmitter *transmitter) override; bool hasValidData() const override; using ClientMessage::ClientMessage; private: QString m_errorText; }; } } }