in src/limitless/limitless_monitor_service.cc [181:204]
bool GetLimitlessInstance(const SQLTCHAR *connection_string_c_str, int host_port, char *service_id_c_str, size_t service_id_size, const LimitlessInstance *db_instance) {
std::string service_id(service_id_c_str);
if (service_id.empty() || !limitless_monitor_service.CheckService(service_id)) {
bool service_id_was_empty = service_id.empty();
if (!limitless_monitor_service.NewService(service_id, connection_string_c_str, host_port, std::make_shared<LimitlessRouterMonitor>())) {
return false;
}
// overwrite the provided service ID if it was overwritten
if (service_id_was_empty) {
strncpy(service_id_c_str, service_id.c_str(), service_id_size);
}
} else {
limitless_monitor_service.IncrementReferenceCounter(service_id);
}
std::shared_ptr<HostInfo> host = limitless_monitor_service.GetHostInfo(service_id);
if (host == nullptr) {
return false;
}
strncpy(db_instance->server, host->GetHost().c_str(), db_instance->server_size);
return true;
}