refreshUrl method
Implementation
Future<void> refreshUrl(List<String> urls) async {
lastRSocketUrls = urls;
unHealthyUrls.clear();
lastRefreshTimeStamp = DateTime.now().millisecondsSinceEpoch;
var newRSockets = <RSocket>[];
var newUrl2Conn = <String, RSocket>{};
var staleRSockets = <String, RSocket>{};
for (var url in urls) {
var rsocket = activeRSockets[url];
try {
rsocket ??= await connect(url);
newRSockets.add(rsocket);
newUrl2Conn[url] = rsocket;
} on Exception {
unHealthyUrls.add(url);
}
}
activeRSockets.forEach((url, rsocket) {
if (newUrl2Conn[url] == null) {
staleRSockets[url] = rsocket;
}
});
roundRobin = newRSockets;
activeRSockets = newUrl2Conn;
poolSize = roundRobin.length;
await closeStales(staleRSockets);
}