| 123456789101112131415161718192021222324252627282930 | 
							- #include <chrono>
 
- #include <string>
 
- #include <thread>
 
- #include "prometheus/exposer.h"
 
- #include "CivetServer.h"
 
- #include "handler.h"
 
- #include "metrics.pb.h"
 
- namespace prometheus {
 
- static const auto uri = std::string{"/metrics"};
 
- Exposer::Exposer(const std::string& bind_address)
 
-     : server_(new CivetServer{{"listening_ports", bind_address.c_str()}}),
 
-       exposer_registry_(std::make_shared<Registry>()),
 
-       metrics_handler_(
 
-           new detail::MetricsHandler{collectables_, *exposer_registry_}) {
 
-   RegisterCollectable(exposer_registry_);
 
-   server_->addHandler(uri, metrics_handler_.get());
 
- }
 
- Exposer::~Exposer() { server_->removeHandler(uri); }
 
- void Exposer::RegisterCollectable(
 
-     const std::weak_ptr<Collectable>& collectable) {
 
-   collectables_.push_back(collectable);
 
- }
 
- }
 
 
  |