91 Family(
const std::string& name,
const std::string& help,
92 const Labels& constant_labels);
111 template <
typename... Args>
112 T&
Add(
const Labels& labels, Args&&... args) {
113 return Add(labels, detail::make_unique<T>(args...));
120 void Remove(T* metric);
125 bool Has(
const Labels& labels)
const;
130 const std::string& GetName()
const;
135 const Labels GetConstantLabels()
const;
142 std::vector<MetricFamily> Collect()
const override;
145 std::unordered_map<Labels, std::unique_ptr<T>, detail::LabelHasher> metrics_;
147 const std::string name_;
148 const std::string help_;
149 const Labels constant_labels_;
150 mutable std::mutex mutex_;
152 ClientMetric CollectMetric(
const Labels& labels, T* metric)
const;
153 T& Add(
const Labels& labels, std::unique_ptr<T>
object);