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

212 lines
7.4 KiB
C++
Executable File

/**
* @RDE_HEADER@
* The ClientMessage class is an abstract base class for concrete ClientMessage objects
* $Id$
* $HeadURL$
* $Author$
* Created by Hannes Baeuerle, SLSE, 2016-08-25
*/
#pragma once
#include <QtCore/QJsonObject>
#include <LtsWebSocket/client_message_factory.h>
#include <LtsWebSocket/client_message.h>
#include "logger.h"
namespace InfrastructureManagement
{
namespace WebSocketInterface
{
class DataManager;
namespace Messages
{
/**
* @brief The ClientMessageFactory class creates ClientMessages which will then be processed
*/
class ClientMessageFactory final : public LtsWebSocket::AbstractClientMessageFactory
{
public:
explicit ClientMessageFactory(DataManager *dataManager);
/**
* @brief create Only way to create a ClientMessage object
* @param message Text message which will be converted to a ClientMessage object
* @return A ClientMessage object, which represents a concrete ClientMessage
*/
LtsWebSocket::AbstractClientMessage *createMessage(LtsWebSocket::ReplyHandler *client,
const QString &message);
private:
DataManager *m_dataManager;
}; // class ClientMessageFactory
/**
* @brief The ClientMessage class is an abstract base class for concrete ClientMessage objects
*/
class ClientMessage : public LtsWebSocket::AbstractClientMessage
{
protected: // method
explicit ClientMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data = QJsonValue());
protected: // attributes
DataManager *m_dataManager;
}; // class ClientMessage
// the following classes are concrete implementation classes of ClientMessage
/**
* @brief The GetAssetStateMessage class represents the appropriate telegram
*/
class GetAssetStateMessage final : public ClientMessage
{
public:
explicit GetAssetStateMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class AssetStateMessage
/**
* @brief Retrieve all assets for the given asset type
*/
class GetAssetsMessage final : public ClientMessage
{
public:
GetAssetsMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class GetAssetsMessage
/**
* @brief The GetBuildingStateMessage class represents the appropriate telegram
*/
class GetBuildingStateMessage final : public ClientMessage
{
public:
explicit GetBuildingStateMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class GetBuildingStateMessage
/**
* @brief The GetEssentialsMessage class represents the appropriate telegram
*/
class GetEssentialsMessage final : public ClientMessage
{
public:
explicit GetEssentialsMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class GetEssentialsMessage
/**
* @brief The GetPlannedMountingMessage class represents the appropriate telegram
*/
class GetPlannedMountingsMessage final : public ClientMessage
{
public:
explicit GetPlannedMountingsMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid);
void process() override;
bool hasValidData() const override;
}; // class GetPlannedMountingMessage
/**
* @brief The GetObjectMountingMessage class represents the appropriate telegram
*/
class GetObjectMountingMessage final : public ClientMessage
{
public:
explicit GetObjectMountingMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class GetObjectMountingMessage
/**
* @brief The MountMessage class represents the appropriate telegram
*/
class MountMessage final : public ClientMessage
{
public:
explicit MountMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class MountMessage
/**
* @brief The MountTagMessage class represents the appropriate telegram
*/
class MountTagMessage final : public ClientMessage
{
public:
explicit MountTagMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class MountTagMessage
/**
* @brief The ObjectMountingReadyMessage class represents the appropriate telegram
*/
class ObjectMountingReadyMessage final : public ClientMessage
{
public:
ObjectMountingReadyMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class ObjectMountingReadyMessage
/**
* @brief The UnmountAreaMessage class represents the appropriate telegram
*/
class UnmountAreaMessage final : public ClientMessage
{
public:
explicit UnmountAreaMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class UnmountAreaMessage
/**
* @brief The UnmountAssetMessage class represents the appropriate telegram
*/
class UnmountAssetMessage final : public ClientMessage
{
public:
explicit UnmountAssetMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class UnmountAssetMessage
class UnmountMountingPointMessage final : public ClientMessage
{
public:
explicit UnmountMountingPointMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class UnmountMountingPointMessage
class UnmountObjectMessage final : public ClientMessage
{
public:
explicit UnmountObjectMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data);
void process() override;
bool hasValidData() const override;
}; // class UnmountObjectMessage
/**
* @brief The BaseDlRequest class handles the base DL request and sends multiple replys depending on the data requested
*/
class BaseDlRequest : public ClientMessage
{
public:
explicit BaseDlRequest(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid);
void process();
bool hasValidData() const;
}; // class BaseDlRequest
} // namespace Messages
} // namespace WebSocketInterface
} // namespace InfrastructureManagement