/** * @RDE_HEADER@ * The ReplyMessage class is an abstract base class for all possible messages which are sent to the client * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Fritsche, SLSE, 2017-09-07 */ #pragma once #include #include #include #include #include #include namespace TrainingAreaBase { namespace WebSocketInterface { namespace Messages { class ReplyMessage : public LtsWebSocket::ReplyMessage { public: ReplyMessage() = default; //!< QVector requires this; don't use directly virtual ~ReplyMessage() = default; virtual QString toJsonString() const; protected: template static QJsonArray vecToPath(const QVector &data) { QJsonArray result; for (const T &p : data) result.append(p.toJson()); return result; } protected: // methods explicit ReplyMessage(const QString &type, const int typeId, const QString &uuid); }; // 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: struct ErrorText { QString lang; QString text; QJsonObject toJson() const; }; struct BiteError { QVector errorTexts; int deviceId = 0; int subDevice = 0; int uniqueId = 0; int errorNo = 0; QJsonObject toJson() const; }; struct ConfigurationError { QString componentName; QString text; QJsonObject toJson() const; }; struct BasicError { QString text; QJsonObject toJson() const; }; struct BiteData { int equipNo = 0; int box = 0; QString lastUpdate; QVector biteErrors; QVector configurationErrors; QVector basicErrors; QString lastPositionUpdate; bool isLicensed; QJsonObject toJson() const; }; explicit BiteDataMessage(const BiteData &data, const QString &uuid); }; // BiteDataMessage class PositionMessage final : public ReplyMessage { public: struct PositionData { int equipNo = 0; Core::GeoPosition pos; qint64 gpsTime = 0; }; QJsonObject toJson() const; explicit PositionMessage(const PositionData &data, const QString &uuid); }; // PositionsMessage } // namespace Messages } // namespace WebSocketInterface } // namespace TrainingAreaBase