/* * Decompiled with CFR 0.152. * * Could not load the following classes: * com.google.common.collect.Lists * org.apache.commons.io.IOUtils */ package com.mojang.realmsclient.client; import com.google.common.collect.Lists; import com.mojang.realmsclient.dto.RegionPingResult; import java.net.InetSocketAddress; import java.net.Socket; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import net.minecraft.util.Util; import org.apache.commons.io.IOUtils; public class Ping { public static List ping(Region ... regions) { for (Region region : regions) { Ping.ping(region.endpoint); } ArrayList results = Lists.newArrayList(); for (Region region : regions) { results.add(new RegionPingResult(region.name, Ping.ping(region.endpoint))); } results.sort(Comparator.comparingInt(RegionPingResult::ping)); return results; } /* * WARNING - Removed try catching itself - possible behaviour change. */ private static int ping(String host) { int timeout = 700; long sum = 0L; Socket socket = null; for (int i = 0; i < 5; ++i) { try { InetSocketAddress sockAddr = new InetSocketAddress(host, 80); socket = new Socket(); long t1 = Ping.now(); socket.connect(sockAddr, 700); sum += Ping.now() - t1; IOUtils.closeQuietly((Socket)socket); continue; } catch (Exception ignored) { sum += 700L; continue; } finally { IOUtils.closeQuietly(socket); } } return (int)((double)sum / 5.0); } private static long now() { return Util.getMillis(); } public static List pingAllRegions() { return Ping.ping(Region.values()); } static enum Region { US_EAST_1("us-east-1", "ec2.us-east-1.amazonaws.com"), US_WEST_2("us-west-2", "ec2.us-west-2.amazonaws.com"), US_WEST_1("us-west-1", "ec2.us-west-1.amazonaws.com"), EU_WEST_1("eu-west-1", "ec2.eu-west-1.amazonaws.com"), AP_SOUTHEAST_1("ap-southeast-1", "ec2.ap-southeast-1.amazonaws.com"), AP_SOUTHEAST_2("ap-southeast-2", "ec2.ap-southeast-2.amazonaws.com"), AP_NORTHEAST_1("ap-northeast-1", "ec2.ap-northeast-1.amazonaws.com"), SA_EAST_1("sa-east-1", "ec2.sa-east-1.amazonaws.com"); private final String name; private final String endpoint; private Region(String name, String endpoint) { this.name = name; this.endpoint = endpoint; } } }