12#ifndef RTCTK_COMPONENTFRAMEWORK_COMPONENTMETRICS_HPP
13#define RTCTK_COMPONENTFRAMEWORK_COMPONENTMETRICS_HPP
15#include <condition_variable>
19#include <log4cplus/logger.h>
55 std::shared_ptr<RepositoryIf> repo,
57 log4cplus::Logger logger,
58 std::chrono::seconds interval = std::chrono::seconds(10));
62 void ConfigurationLoop();
64 std::weak_ptr<ComponentMetricsIf> m_service;
65 std::shared_ptr<RepositoryIf> m_repo;
67 const std::chrono::seconds m_interval;
70 std::condition_variable m_cond;
73 log4cplus::Logger m_logger;
118 log4cplus::Logger logger,
130 [[nodiscard]]
virtual perfc::ScopedRegistration
148 std::chrono::milliseconds counter_poll_interval = std::chrono::milliseconds(5000);
149 std::chrono::milliseconds thread_poll_interval = std::chrono::milliseconds(5000);
153 struct MonitoringThread {
154 MonitoringThread(std::thread t) : stop_flag(false), id(0), thread(std::move(t)) {
173 void MonitoringLoop();
178 std::shared_ptr<OldbIf> m_oldb;
179 DataPointPath m_root;
188 std::recursive_mutex m_api_mtx;
195 std::mutex m_mon_mtx;
201 std::condition_variable m_cond;
208 perfc::Register<CounterTypes, CounterMetricInfo> m_counters;
209 std::vector<Thread> m_threads;
210 std::optional<MonitoringThread> m_monitoring_thread;
211 log4cplus::Logger m_logger;
Configures ComponentMetrics from a runtime repository.
Definition: componentMetrics.hpp:43
~ComponentMetricsConfigurator() noexcept
Definition: componentMetrics.cpp:338
Component metrics interface.
Definition: componentMetricsIf.hpp:184
typename CounterTypes::CounterVariant CounterVariant
std::variant of pointers to each supported type in CounterTypes.
Definition: componentMetricsIf.hpp:243
perfc::CounterTypes< perfc::CounterDouble, perfc::CounterU64, perfc::CounterI64 > CounterTypes
Defines standard performance counter types:
Definition: componentMetricsIf.hpp:237
Implementation of ComponentMetricsIf.
Definition: componentMetrics.hpp:103
void StopMonitoring() noexcept override
Stop monitoring.
Definition: componentMetrics.cpp:390
void RemoveThread(pid_t thread) override
Remove previously registered thread.
Definition: componentMetrics.cpp:505
bool RemoveCounter(CounterVariant counter) override
Remove counter from register.
Definition: componentMetrics.cpp:470
virtual perfc::ScopedRegistration AddCounter(CounterVariant counter, CounterMetricInfo info) override
Add a counter to be included in component metrics, identified by its address, together with info to t...
Definition: componentMetrics.cpp:427
bool IsMonitoring() noexcept override
Query whether monitoring is active.
Definition: componentMetrics.cpp:406
void StartMonitoring() override
Start monitoring and publishing metrics.
Definition: componentMetrics.cpp:361
void UpdateParams(ComponentMetricsParams const ¶ms) override
Updates parameters from params.
Definition: componentMetrics.cpp:412
void AddThread(pid_t pid, ThreadMetricInfo info) override
Add a thread to be included in component metrics.
Definition: componentMetrics.cpp:476
~ComponentMetrics() noexcept
Destructor will automatically stop monitoring.
Definition: componentMetrics.cpp:357
Defines auxiliary information associated with each counter registered with ComponentMetricsIf.
Definition: componentMetricsIf.hpp:46
This class provides a wrapper for a data point path.
Definition: dataPointPath.hpp:73
Defines auxiliary information associated with each thread registered with ComponentMetricsIf.
Definition: componentMetricsIf.hpp:85
Header file for ComponentMetricsIf.
Header file for DataPointPath.
Definition: commandReplier.cpp:22
Dynamic parameters for ComponentMetrics.
Definition: componentMetricsIf.hpp:118
Definition: componentMetrics.hpp:137
ThreadMetricInfo info
Definition: componentMetrics.hpp:139
pid_t pid
Definition: componentMetrics.hpp:138