3#include <userver/utils/statistics/fwd.hpp>
4#include <userver/utils/statistics/rate.hpp>
5#include <userver/utils/statistics/rate_counter.hpp>
6#include <userver/utils/statistics/recentperiod.hpp>
10namespace cache::impl {
12struct ExpirableLruCacheStatisticsAggregator
final {
16 utils::statistics::
Rate background_updates;
18 ExpirableLruCacheStatisticsAggregator& operator+=(
const ExpirableLruCacheStatisticsAggregator& other);
21struct ExpirableLruCacheStatisticsBase
final {
22 utils::statistics::RateCounter hits;
23 utils::statistics::RateCounter misses;
24 utils::statistics::RateCounter stale;
25 utils::statistics::RateCounter background_updates;
27 ExpirableLruCacheStatisticsAggregator Load()
const;
32struct ExpirableLruCacheStatistics
final {
33 ExpirableLruCacheStatisticsBase total;
34 utils::statistics::
RecentPeriod<std::atomic<std::uint64_t>, std::uint64_t> recent_hits;
35 utils::statistics::
RecentPeriod<std::atomic<std::uint64_t>, std::uint64_t> recent_misses;
38void CacheHit(ExpirableLruCacheStatistics& stats);
40void CacheMiss(ExpirableLruCacheStatistics& stats);
42void CacheStale(ExpirableLruCacheStatistics& stats);
44void CacheBackgroundUpdate(ExpirableLruCacheStatistics& stats);
46void DumpMetric(
utils::statistics::Writer& writer,
const ExpirableLruCacheStatisticsBase& stats);
48void DumpMetric(
utils::statistics::Writer& writer,
const ExpirableLruCacheStatistics& stats);