9#include <userver/utils/statistics/metric_tag.hpp>
10#include <userver/utils/statistics/metrics_storage.hpp>
12USERVER_NAMESPACE_BEGIN
18 mutable std::atomic<
bool> fired{
false};
19 std::atomic<std::chrono::steady_clock::time_point> stop_timepoint{{}};
21 bool IsExpired()
const;
24void DumpMetric(utils::statistics::Writer& writer,
const SourceData& m);
38 static constexpr std::chrono::seconds kDefaultDuration{120};
39 static constexpr std::chrono::hours kInfiniteDuration{24 * 365 * 10};
43 explicit Source(std::string_view name);
46 void FireAlert(utils::statistics::MetricsStorage& storage, std::chrono::seconds duration = kDefaultDuration)
const;
49 void StopAlertNow(utils::statistics::MetricsStorage& storage)
const;
52 utils::statistics::MetricTag<impl::SourceData> tag_;