#pragma once #include "clickhouse/client.h" #include namespace clickhouse { struct ClientOptions; /** * Base class for iterating through endpoints. */ class EndpointsIteratorBase { public: virtual ~EndpointsIteratorBase() = default; virtual Endpoint Next() = 0; }; class RoundRobinEndpointsIterator : public EndpointsIteratorBase { public: explicit RoundRobinEndpointsIterator(const std::vector& opts); Endpoint Next() override; ~RoundRobinEndpointsIterator() override; private: const std::vector& endpoints; size_t current_index; }; }