| 12345678910111213141516171819202122232425262728293031323334353637383940 | #pragma once#include <atomic>#include <cstdint>#include <memory>#include <string>#include <thread>#include <vector>#include <boost/beast/core.hpp>#include "prometheus/collectable.h"#include "prometheus/registry.h"class CivetServer;namespace prometheus {    namespace detail {        class MetricsHandler;    }  // namespace detail    class BeastExposer {    public:        explicit BeastExposer(const std::string host, const std::uint16_t port,                         const std::string& uri = std::string("/metrics"),                         const std::size_t num_threads = 2);        ~BeastExposer();        void RegisterCollectable(const std::weak_ptr<Collectable>& collectable);    private:        std::vector<std::thread> worker_;        std::unique_ptr<boost::asio::io_context> ioc_;        std::vector<std::weak_ptr<Collectable>> collectables_;        std::shared_ptr<Registry> exposer_registry_;        //std::unique_ptr<detail::MetricsHandler> metrics_handler_;        std::string uri_;    };}  // namespace prometheus
 |