in src/limitless/limitless_monitor_service.cc [156:175]
std::shared_ptr<HostInfo> LimitlessMonitorService::GetHostInfo(const std::string& service_id) {
std::lock_guard<std::mutex> services_guard(*(this->services_mutex));
if (!this->services.contains(service_id)) {
LOG(ERROR) << "Attempted to get host info for non-existent monitor with service ID " << service_id;
return nullptr;
}
std::shared_ptr<LimitlessMonitor> service = this->services[service_id];
std::lock_guard<std::mutex> limitless_routers_guard(*(service->limitless_routers_mutex));
std::vector<HostInfo> hosts = *(service->limitless_routers);
if (hosts.empty()) {
return nullptr;
}
std::unordered_map<std::string, std::string> properties;
RoundRobinHostSelector::SetRoundRobinWeight(hosts, properties);
std::shared_ptr<HostInfo> host = std::make_shared<HostInfo>(round_robin.GetHost(hosts, true, properties));
return host;
}