/** * @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 #include #include #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