117 lines
2.9 KiB
C++
Executable File
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
|