#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: NGL::INGLLogger &m_logger; void sendMessages(); private: NGL::INGLLogger &m_logger; QWebSocket *m_socket; QQueue m_messageQueue; QHostAddress m_ip; }; } } }