Files
qt5-legatus-legacy/Lts/Proxies/CombatNetRadio/WebSocketInterface/Connection/client_connection.h
T
2026-08-13 18:33:10 +02:00

61 lines
1.3 KiB
C++
Executable File

/**
* @RDE_HEADER@
* The ClientConnection class represents a connection to a single client.
* $Id$
* $HeadURL$
* $Author$
* Created by Hannes Fritsche, SLSE, 2017-09-07
*/
#pragma once
#include <QtCore/QQueue>
#include <QtNetwork/QHostAddress>
#include "WebSocketInterface/Messages/message_transmitter.h"
#include "logger.h"
class QWebSocket;
class QTimer;
namespace CombatNetRadio
{
namespace WebSocketInterface
{
namespace Connection
{
class ClientConnection
: public QObject
, public Messages::MessageTransmitter
{
Q_OBJECT
public:
explicit ClientConnection(QWebSocket *socket, QObject *parent = nullptr);
~ClientConnection();
bool init();
QHostAddress ip() const;
void addMessage(const Messages::ReplyMessage &message) override final;
Q_SIGNALS:
void newTextMessage(MessageTransmitter *transmitter, const QString &message);
void disconnected(ClientConnection *conn);
private Q_SLOTS:
void onNewTextMessageFromSocket(const QString &message);
void sendMessagesFromQueue();
void onSocketDisconnect();
private: // methods
void sendMessages();
private: // attributes
QWebSocket *m_socket;
QQueue<Messages::ReplyMessage> m_messageQueue;
QHostAddress m_ip;
LOGGER_T m_logger;
}; // class ClientConnection
} // namespace Connection
} // namespace WebSocketInterface
} // namespace CombatNetRadio