| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | #pragma once#include <map>#include <memory>#include <mutex>#include <string>#include <vector>#include "prometheus/collectable.h"#include "prometheus/counter.h"#include "prometheus/counter_builder.h"#include "prometheus/family.h"#include "prometheus/gauge.h"#include "prometheus/gauge_builder.h"#include "prometheus/histogram.h"#include "prometheus/histogram_builder.h"#include "prometheus/metric_family.h"#include "prometheus/summary.h"#include "prometheus/summary_builder.h"namespace prometheus {class Registry : public Collectable { public:  friend class detail::CounterBuilder;  friend class detail::GaugeBuilder;  friend class detail::HistogramBuilder;  friend class detail::SummaryBuilder;  // collectable  std::vector<MetricFamily> Collect() override; private:  Family<Counter>& AddCounter(const std::string& name, const std::string& help,                              const std::map<std::string, std::string>& labels);  Family<Gauge>& AddGauge(const std::string& name, const std::string& help,                          const std::map<std::string, std::string>& labels);  Family<Histogram>& AddHistogram(      const std::string& name, const std::string& help,      const std::map<std::string, std::string>& labels);  Family<Summary>& AddSummary(const std::string& name, const std::string& help,                              const std::map<std::string, std::string>& labels);  std::vector<std::unique_ptr<Collectable>> collectables_;  std::mutex mutex_;};}  // namespace prometheus
 |