Files
scylladb/vector_search/dns.hh
Karol Nowacki 647172d4b8 vector_search: fix names of private members
According to coding style in Scylla,
member variables are prefixed with underscore.
2026-03-02 14:08:16 +01:00

80 lines
2.1 KiB
C++

/*
* Copyright (C) 2025-present ScyllaDB
*/
/*
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
*/
#pragma once
#include <seastar/core/future.hh>
#include <seastar/core/gate.hh>
#include <seastar/core/abort_source.hh>
#include <seastar/core/lowres_clock.hh>
#include <seastar/core/condition-variable.hh>
#include <seastar/core/sstring.hh>
#include "utils/log.hh"
#include <chrono>
#include <map>
#include <vector>
#include <functional>
#include <seastar/net/inet_address.hh>
namespace vector_search {
class dns {
public:
using address_type = std::vector<seastar::net::inet_address>;
using resolver_type = std::function<seastar::future<address_type>(seastar::sstring const&)>;
using host_address_map = std::unordered_map<seastar::sstring, address_type>;
using listener_type = std::function<seastar::future<>(host_address_map const&)>;
explicit dns(logging::logger& logger, std::vector<seastar::sstring> hosts, listener_type listener, uint64_t& refreshes_counter);
void start_background_tasks();
void refresh_interval(std::chrono::milliseconds interval) {
_refresh_interval = interval;
}
void hosts(std::vector<seastar::sstring> hosts) {
_addresses.clear();
_hosts = std::move(hosts);
trigger_refresh();
}
void resolver(resolver_type r) {
_resolver = std::move(r);
}
void trigger_refresh() {
_refresh_cv.signal();
}
seastar::future<> refresh_addr_task();
seastar::future<> stop() {
_abort_refresh.request_abort();
_refresh_cv.signal();
return _tasks_gate.close();
}
private:
seastar::future<> refresh_addr();
seastar::gate _tasks_gate;
logging::logger& _logger;
seastar::abort_source _abort_refresh;
seastar::lowres_clock::time_point _last_refresh;
std::chrono::milliseconds _refresh_interval;
seastar::condition_variable _refresh_cv;
resolver_type _resolver;
std::vector<seastar::sstring> _hosts;
host_address_map _addresses;
listener_type _listener;
uint64_t& _refreshes_counter;
};
} // namespace vector_search