6 #include <unordered_map>
9 #include "prometheus/client_metric.h"
10 #include "prometheus/collectable.h"
11 #include "prometheus/detail/core_export.h"
12 #include "prometheus/detail/future_std.h"
13 #include "prometheus/detail/utils.h"
14 #include "prometheus/labels.h"
15 #include "prometheus/metric_family.h"
92 Family(
const std::string& name,
const std::string& help,
93 const Labels& constant_labels);
112 template <
typename... Args>
114 return Add(labels, detail::make_unique<T>(args...));
121 void Remove(T* metric);
126 bool Has(
const Labels& labels)
const;
131 const std::string& GetName()
const;
136 const Labels& GetConstantLabels()
const;
143 std::vector<MetricFamily> Collect()
const override;
148 const std::string name_;
149 const std::string help_;
150 const Labels constant_labels_;
151 mutable std::mutex mutex_;
154 T& Add(
const Labels& labels, std::unique_ptr<T>
object);