Files
qt6-migration-pipeline/Lts/Common/LtsWebSocket/client_connection.h
T

71 lines
978 B
C++
Executable File

#pragma once
#include <QtCore/QThread>
#include <QtCore/QQueue>
#include "reply_message.h"
#include "logger.h"
#include <LtsWebSocket/ltswebsocketserver_export.h>
class QWebSocket;
namespace LtsWebSocket
{
class LTSWEBSOCKETSERVER_EXPORT ClientConnection
: public QThread
, public ReplyHandler
{
Q_OBJECT
public:
explicit ClientConnection(QWebSocket *socket, QObject *parent = nullptr);
~ClientConnection();
bool init();
void addReply(ReplyMessage *message) override;
QWebSocket *webSocket() { return m_socket; }
signals:
void newTextMessage(ClientConnection *client, const QString &message);
void disconnected(ClientConnection *client);
private slots:
void onNewTextMessageFromSocket(const QString &message);
void sendMessagesFromQueue();
void onSocketDisconnect();
private:
void sendMessages();
private:
QWebSocket *m_socket;
QQueue<ReplyMessage *> m_messageQueue;
LOGGER_T m_logger;
};
}