23 #include <unordered_map>
26 #include "prometheus/client_metric.h"
27 #include "prometheus/collectable.h"
28 #include "prometheus/detail/core_export.h"
29 #include "prometheus/detail/future_std.h"
30 #include "prometheus/detail/utils.h"
31 #include "prometheus/labels.h"
32 #include "prometheus/metric_family.h"
109 Family(
const std::string& name,
const std::string& help,
110 const Labels& constant_labels);
129 template <
typename... Args>
131 return Add(labels, detail::make_unique<T>(args...));
138 void Remove(T* metric);
143 bool Has(
const Labels& labels)
const;
148 const std::string& GetName()
const;
153 const Labels& GetConstantLabels()
const;
160 std::vector<MetricFamily> Collect()
const override;
165 const std::string name_;
166 const std::string help_;
167 const Labels constant_labels_;
168 mutable std::mutex mutex_;
171 T& Add(
const Labels& labels, std::unique_ptr<T>
object);