// // Created by test on 2022/11/3. // #ifndef OPCUA_EXPORTER_DBPCOLLECTOR_H #define OPCUA_EXPORTER_DBPCOLLECTOR_H #include #include #include #include #include #include #include #include #include #include class DBPcollector : public prometheus::Collectable { public: explicit DBPcollector(YAML::Node const &config, std::shared_ptr dbp_client); ~DBPcollector() override = default; std::vector Collect() const override; nlohmann::json const &getMetricsJson(); private: void buildMetrics(YAML::Node const &config); bool updateMetrics(); void clearMetrics(); prometheus::Labels getNodeLabels(YAML::Node const &labels); private: std::shared_ptr registry_; std::shared_ptr dbp_client_; std::vector dbp_read_node_ids; struct st_node { std::string name; prometheus::Family *family{nullptr}; prometheus::Gauge *data{nullptr}; void setValue(double val); }; std::map nodes; nlohmann::json metrics_json_; }; #endif //OPCUA_EXPORTER_DBPCOLLECTOR_H