Files
qt5-legatus-legacy/Lts/Common/LtsWebSocket/lts_web_socket_client.h
T
2026-08-13 18:33:10 +02:00

85 lines
1.9 KiB
C++
Executable File

/**
* @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 <QObject>
#include <QAbstractSocket>
#include <LtsWebSocket/ltswebsocketclient_export.h>
#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