Files
qt5-legatus-legacy/Lts/Proxies/CombatNetRadio/WebSocketInterface/Messages/client_message.h
T
2026-08-13 18:33:10 +02:00

117 lines
2.9 KiB
C++
Executable File

/**
* @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 <QtCore/QJsonObject>
#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