/** * @RDE_HEADER@ * The LtsWebSocketClient handles a websocket connection to a server * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, NLST, 2018-03-19 */ #pragma once #include #include #include #include "client_message_factory.h" #include "logger.h" class QThread; namespace LtsWebSocket { class WebSocketHelper; /** * @brief The LtsWebSocketClient class processes messages from a client connection and starts the parsing of them */ class LTSWEBSOCKETCLIENT_EXPORT LtsWebSocketClient : public QObject , public ReplyHandler { Q_OBJECT public: /** * @brief LtsWebSocketClient Constructor * @param messageFactory Convenience class for creating ClientMessage * @param parent QObject parent */ explicit LtsWebSocketClient(AbstractClientMessageFactory *messageFactory, QObject *parent = nullptr); ~LtsWebSocketClient(); /** * @brief open Opens a websocket with the given hostname and port * @param hostname Hostname * @param port Port of the server */ void open(const QString &hostname, const unsigned short port); /** * @brief close */ void close(); /** * @brief addReply Sends the message to the server * @param message Message to be send */ void addReply(ReplyMessage *message) override; signals: void connected(); void disconnected(); void dataReceived(); private slots: /** * @brief called when the thread finsihed parsing the message so it can be processed by the main thread */ void onNewClientMessage(AbstractClientMessage *clientMessage); signals: void onOpen(const QString &hostname, const unsigned short port); void onClose(); void onSendTextMessage(const QString &msg); private: AbstractClientMessageFactory *m_messageFactory; QThread *m_webSocketHelperThread; WebSocketHelper *m_webSocketHelper; LOGGER_T m_logger; }; } // namespace LtsWebSocketClient