measureLatencies method
Measure latency to each mirror using a HEAD request.
Updates Mirror.latencyMs and Mirror.isAvailable for each mirror.
Implementation
Future<void> measureLatencies() async {
await Future.wait(
mirrors.map((m) async {
try {
final stopwatch = Stopwatch()..start();
final response = await _client
.head(Uri.parse(m.baseUrl))
.timeout(const Duration(seconds: 10));
stopwatch.stop();
m.latencyMs = stopwatch.elapsedMilliseconds;
m.isAvailable = response.statusCode == 200 ||
response.statusCode == 301 ||
response.statusCode == 302;
} catch (e) {
m.latencyMs = null;
m.isAvailable = false;
}
}),
);
}