/** * @RDE_HEADER@ * Handler for ComponentStatus * $Id$ * $HeadURL$ * $Author$ * Created by Norbert Thoden, SLSE, 2022-11-03 */ #pragma once #include "logger.h" #include #include #include #include namespace DDSConnector { class DdsConnector; } namespace ComponentMonitor { class DdsHandler; // Class ComponentStatusHandler is created for publishing ComponentStatus. class ComponentStatusHandler : public QObject { Q_OBJECT using CONT_T = QMap; // (instrumentationAsset)Id <-> ComponentStatus using ITERATOR_T = QMap::iterator; using CONST_ITERATOR_T = QMap::ConstIterator; public: ComponentStatusHandler(); ~ComponentStatusHandler(); bool initialize(const std::shared_ptr &ddsHandler); long statusMapSize() const { return m_statusMap.size(); } std::vector getHostnames() const; public Q_SLOTS: void onNewState(const QString &hostname, bool reachable, long long lastCheckSec); // UpdateLastCheckTimeDirect: void onUpdateLastCheckTimeDirect(const QStringList &hostnamesForUpdateLastCheckTime, qint64 lastCheckSec); private Q_SLOTS: void onInstrumentationAssetChanged(const InfrastructureManagement::InstrumentationAsset &iAsset, DataModification dataMod); void dump(); protected: bool addUpdateInstrumentationAsset(ITERATOR_T it, const ComponentStatus &cs); bool removeInstrumentationAsset(ITERATOR_T it); private: std::shared_ptr m_ddsHandler; std::shared_ptr m_ismDtc; CONT_T m_statusMap; // lookupTable for checkmk and publishing NGL::INGLLogger &m_logger; }; } // namespace ComponentMonitor