/** * TcpSocket handling for MeteoDataUnit * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-09-22 */ #pragma once #include #include "logger.h" namespace MeteoDataManagement { class TcpSocket : public QObject { Q_OBJECT public: explicit TcpSocket(const char *logName, QObject *parent = nullptr); ~TcpSocket(); protected: /** * Connect to converter * @param[in] hostName Hostname or Ip address of the RS232-LAN Converter * @param[in] windPort Port number of especially sensor on the RS232-LAN Converter */ void start(const QString &hostName, quint16 port); /** * Define the signal/slots connects uesd for TcpSocket */ protected Q_SLOTS: void doConnect(); void onConnected(); void onDisonnected(); void onError(QAbstractSocket::SocketError); void onReadyRead(); /** * Send data to connected TcpSocket * @param[in] qba Data tob transfered */ bool sendCommand(const QByteArray &qba); protected: /** * pure virtual function to initialize the especially sensor device */ virtual void init() = 0; /** * Pure virtual function to handle the especially sensor device data * @param[in] qba Data tob transfered */ virtual void dataAvailable(const QByteArray &line) = 0; QString m_hostName; ///< Hostname or Ip address to get access to the RS232-LAN Converter quint16 m_hostPort; ///< Access port number of sensor on the RS232-LAN Converter qint32 m_waitTime; ///< delay time before try reconnection QTcpSocket *m_socket; ///< pointer to tcpsocket object bool m_tryReconnect; ///< if true, try reconnection bool m_bSocketErrorWarnedOnce; NGL::INGLLogger &m_logger; }; } // namespace MeteoDataManagement