| 123456789101112131415161718192021222324252627282930 | 
							- #include <chrono>
 
- #include <string>
 
- #include <thread>
 
- #include "prometheus/exposer.h"
 
- #include "CivetServer.h"
 
- #include "handler.h"
 
- #include "metrics.pb.h"
 
- namespace prometheus {
 
- Exposer::Exposer(const std::string& bind_address, const std::string& uri)
 
-     : server_(new CivetServer{
 
-           {"listening_ports", bind_address.c_str(), "num_threads", "2"}}),
 
-       exposer_registry_(std::make_shared<Registry>()),
 
-       metrics_handler_(
 
-           new detail::MetricsHandler{collectables_, *exposer_registry_}),
 
-       uri_(uri) {
 
-   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);
 
- }
 
- }  // namespace prometheus
 
 
  |