/** * @RDE_HEADER@ * The ClientMessage class is an abstract base class for concrete ClientMessage objects * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, SLST, 2017-12-05 */ #pragma once #include #include #include #include "logger.h" #include // incoming messages namespace WarehouseGuez { namespace WsBaseDataInterface { 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); protected: // attributes DataManager *m_dataManager; }; // class ClientMessage // ################## Message Implementations ################## class EquipmentTypesRequest : public ClientMessage { public: explicit EquipmentTypesRequest (DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid); void process(); bool hasValidData() const; }; // class EquipmentTypesRequest // Client -> Server - answer to ExercisesRequest or information from Client that a specific exercise changed // -> then there is only one exercise in the message class ExercisesReply : public ClientMessage { public: explicit ExercisesReply (DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data); void process(); bool hasValidData() const; }; // class ExercisesReply class ExerciseUpdate : public ClientMessage { public: explicit ExerciseUpdate (DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data); void process(); bool hasValidData() const; }; // class ExerciseUpdate class ParticipantsReply : public ClientMessage { public: explicit ParticipantsReply (DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data); void process(); bool hasValidData() const; }; // class ParticipantsReply class ParticipantsUpdate : public ClientMessage { public: explicit ParticipantsUpdate (DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data); void process(); bool hasValidData() const; }; // class ParticipantsUpdate class ParticipantRegisterInExconReply : public ClientMessage { public: explicit ParticipantRegisterInExconReply (DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data); void process(); bool hasValidData() const; }; // class ParticipantRegisterInExconReply } // namespace Messages } // namespace WsBiteInterface } // namespace WarehouseGuez