in src/host_selector/random_host_selector.cc [21:41]
HostInfo RandomHostSelector::GetHost(std::vector<HostInfo> hosts, bool is_writer,
std::unordered_map<std::string, std::string>) {
std::vector<HostInfo> selection;
selection.reserve(hosts.size());
std::copy_if(hosts.begin(), hosts.end(), std::back_inserter(selection), [&is_writer](const HostInfo& host) {
return host.IsHostUp() && (is_writer ? host.IsHostWriter() : true);
});
if (selection.empty()) {
throw std::runtime_error("No available hosts found in list");
}
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, selection.size() - 1);
int rand_idx = dis(gen);
return selection[rand_idx];
}