#pragma once // Qt includes #include #include #include // utils includes #include #include class ImageProcessor; class Hyperion; /// /// The Connection object created by \a BoblightServer when a new connection is establshed /// class BoblightClientConnection : public QObject { Q_OBJECT public: /// /// Constructor /// @param socket The Socket object for this connection /// @param hyperion The Hyperion server /// BoblightClientConnection(Hyperion* hyperion, QTcpSocket * socket, const int priority); /// /// Destructor /// ~BoblightClientConnection(); signals: /// /// Signal which is emitted when the connection is being closed /// @param connection This connection object /// void connectionClosed(BoblightClientConnection * connection); private slots: /// /// Slot called when new data has arrived /// void readData(); /// /// Slot called when this connection is being closed /// void socketClosed(); private: /// /// Handle an incoming boblight message /// /// @param message the incoming message as string /// void handleMessage(const QString &message); /// /// Send a message to the connected client /// /// @param message The boblight message to send /// void sendMessage(const QByteArray &message) { _socket->write(message); }; /// /// Send a lights message the to connected client /// void sendLightMessage(); private: /// Locale used for parsing floating point values QLocale _locale; /// The TCP-Socket that is connected tot the boblight-client QTcpSocket * _socket; /// The processor for translating images to led-values ImageProcessor * _imageProcessor; /// Link to Hyperion for writing led-values to a priority channel Hyperion * _hyperion; /// The buffer used for reading data from the socket QByteArray _receiveBuffer; /// The priority used by this connection int _priority; /// The latest led color data std::vector _ledColors; /// logger instance Logger * _log; /// address of client QString _clientAddress; };