/** * @RDE_HEADER@ * The DataManager class is a convenience class for managing structure data * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Fritsche, SLSE, 2017-09-07 */ #pragma once #include #include #include #include #include #include "logger.h" #include #include #include #include class QTimer; namespace WarehouseGuez { namespace Interface { class Dtc; } class DdsHandler; namespace WsBiteInterface { namespace Messages { class MessageTransmitter; } class DataManager final : public QObject { Q_OBJECT public: explicit DataManager(std::shared_ptr ddsHandler); ~DataManager(); void setEquipNoBoxId( int equipNo, int boxId, Messages::MessageTransmitter* transmitter, const QString &uuid); Q_SIGNALS: void closed(); void closedTab(); public slots: void onClientDisconnect(Messages::MessageTransmitter *transmitter); private Q_SLOTS: void onConnected(); void onConnectedTab(); void onTimerTimeout(); void onTextMessageFromScm(const QString &message); void onTextMessageFromTab(const QString &message); private: // methods void connectToTabWebSocket(int port, int exerciseId); private: // attributes struct EquipData { int equipNo{0}; int boxId{-1} ; Messages::MessageTransmitter* transmitter{nullptr}; QString uuid; QJsonObject biteMessage; qint64 lastPositionUpdate{0}; }; struct TabData { int exerciseId{0}; int port{0}; QWebSocket* websocket; }; QWebSocket *m_scmWebSocket; QMap m_tabWebSocketMap; QMap m_equipDataMap; // Key: equipNo, Value: std::shared_ptr m_ddsHandler; std::shared_ptr m_tabDtc; ///< Pointer to DTC Training Area Base interface object QTimer *m_timer = nullptr; LOGGER_T m_logger; }; // class DataManager } // namespace WsBiteInterface } // namespace WarehouseGuez