Files
qt5-legatus-legacy/Lts/Services/WarehouseGuez/WsBiteInterface/Messages/ws_reply_message.h
T
2026-08-13 18:33:10 +02:00

104 lines
2.3 KiB
C++
Executable File

/**
* @RDE_HEADER@
* The ReplyMessage class is an abstract base class for all possible messages which are sent to the client
* $Id: reply_message.h 58543 2022-12-05 13:40:10Z rathje $
* $HeadURL: svn://slssvn/TDS/branches/product/stable/guez2/Lts/Services/WarehouseGuez/WsBiteInterface/Messages/reply_message.h $
* $Author: rathje $
* Created by Hannes Fritsche, SLSE, 2017-09-07
*/
#pragma once
#include <QtCore/QVector>
#include <QtCore/QJsonObject>
#include <QtCore/QJsonArray>
#include <QtCore/QString>
namespace WarehouseGuez
{
namespace WsBiteInterface
{
namespace Messages
{
class ReplyMessage
{
public:
ReplyMessage() = default; //!< QVector requires this; don't use directly
virtual ~ReplyMessage() = default;
virtual QString toJsonString() const;
protected:
template<typename T>
static QJsonArray vecToPath(const QVector<T> &data)
{
QJsonArray result;
for (const T &p : data)
result.append(p.toJson());
return result;
}
protected: // methods
explicit ReplyMessage(const QString &type, const QString &uuid);
protected: // attributes
QJsonObject m_jsonRepresentation;
}; // class Reply Message
class ErrorMessage final
: public ReplyMessage
{
public:
struct ErrorData
{
int errorClass = 0;
QString uuid;
QString errorMessage;
ErrorData() = default;
explicit ErrorData(int errorClass_, const QString &uuid_, const QString &errorMessage_)
: errorClass(errorClass_)
, uuid(uuid_)
, errorMessage(errorMessage_)
{}
};
explicit ErrorMessage(const ErrorData &data);
explicit ErrorMessage(int errorClass, const QString &uuid, const QString &errorMessage)
: ErrorMessage(ErrorData(errorClass, uuid, errorMessage))
{}
}; // class ErrorMessage
class OkMessage final
: public ReplyMessage
{
public:
struct OkData
{
QString uuid;
QString messageType;
QString info;
};
explicit OkMessage(const OkData &data);
}; // class OkMessage
class BiteDataMessage final
: public ReplyMessage
{
public:
explicit BiteDataMessage(const QJsonObject &data, const QString &uuid);
}; // BiteDataMessage
} // namespace Messages
} // namespace WsBiteInterface
} // namespace WarehouseGuez