/** * @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 #include #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 m_messageQueue; QHostAddress m_ip; LOGGER_T m_logger; }; // class ClientConnection } // namespace Connection } // namespace WebSocketInterface } // namespace CombatNetRadio