/** * @RDE_HEADER@ * Handler for the WebSocket Interface * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, SLST, 2017-12-05 */ #pragma once #include #include #include #include "logger.h" #include "enums.h" class QTimer; namespace OcBaseDownload { class MainHandler; namespace WebSocketInterface { namespace Messages { class ClientMessageFactory; class ReplyMessage; } class DataManager; /** * @brief The WebSocketInterfaceHandler class is the main class for the WebSocketInterface */ class WebSocketInterfaceHandler final : public QObject { Q_OBJECT public: /** * @brief WebSocketInterfaceHandler Constructor * @param mainHandler MainHandler to get the HandlerStructureElement from */ explicit WebSocketInterfaceHandler(MainHandler *mainHandler, QObject *parent = nullptr); /** * @brief ~WebSocketInterfaceHandler Destructor */ ~WebSocketInterfaceHandler(); /** * @brief init Initialises all needed classes for the WebSocketInterface * @return True on success, otherwise false */ bool init(); /** * @brief open Opens the websocket with the given parameter * @param hostname * @param port */ void open(const QString &hostname, int port); /** * @brief close */ void close(); /** * @brief send Sends the given message * @param msg */ bool send(LtsWebSocket::ReplyMessage *message); /** * @brief setCurrentDownload sets the current download * @param currentDownload The new value */ void setCurrentDownload(CurrentDownload currentDownload); /** * @brief Getter for current download * @return Value of the current download */ CurrentDownload currentDownload() const; signals: void connected(); void disconnected(); void dataReceiveTimeout(); void dataReceived(); private: void cleanup(); void recreateWebSocket(); private: LtsWebSocket::LtsWebSocketClient *m_webSocketClient; Messages::ClientMessageFactory *m_messageFactory; DataManager *m_dataManager; MainHandler *m_mainHandler; QTimer *m_webSocketActivityTimer; LOGGER_T m_logger; }; // class WebSocketInterfaceHandle } // namespace WebSocketInterface } // namespace OcBaseDownload