refreshUrl method

Future<void> refreshUrl(
  1. List<String> urls
)

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);
}