/** * @RDE_HEADER@ * Handler for CheckmkHandler * $Id$ * $HeadURL$ * $Author$ * Created by Norbert Thoden, SLSE, 2022-11-03 */ #pragma once #include "logger.h" #include #include #include #include #include namespace DDSConnector { class DdsConnector; } namespace ComponentMonitor { class DdsHandler; // Maybe helpful: // https://docs.checkmk.com/latest/de/livestatus.html // https://docs.checkmk.com/latest/de/livestatus_references.html // https://github.com/sileht/check_mk/blob/master/livestatus/api/python/livestatus.py class CheckmkHandler : public QObject { Q_OBJECT public: CheckmkHandler(); ~CheckmkHandler(); bool initialize(const QString &checkMkServerHostname, int checkMkServerPort, int checkIntervalSec); void run(); void stop(); bool doConnect(); public Q_SLOTS: void onImmediateGetStateRequested(); private: bool writeGetStateRequest(); Q_SIGNALS: void newState(QString hostname, bool state, long long lastCheck); private Q_SLOTS: void onTimeout(); void readData(); void onConnected(); void onStateChanged(const QAbstractSocket::SocketState &newState); void onSocketError(const QAbstractSocket::SocketError &socketError); protected: bool processLine(const QByteArray &line); private: // checkMkServer QString m_checkMkHost; quint16 m_checkMkPort{0}; int m_checkIntervalSec{60}; int m_highFrequencyCheck{-1}; QTimer *m_timer{nullptr}; QTcpSocket *m_socket{nullptr}; NGL::INGLLogger &m_logger; }; } // namespace ComponentMonitor