Ping.java
com.mojang.realmsclient.client.Ping
信息
- 全限定名:com.mojang.realmsclient.client.Ping
- 类型:public class
- 包:com.mojang.realmsclient.client
- 源码路径:src/main/java/com/mojang/realmsclient/client/Ping.java
- 起始行号:L16
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
com.mojang.realmsclient.client.Ping.Region- 类型:
enum - 修饰符:
static - 源码定位:
L63 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static List<RegionPingResult> ping(Ping.Region... regions) @ L17
- 方法名:ping
- 源码定位:L17
- 返回类型:List
- 修饰符:public static
参数:
- regions: Ping.Region…
说明:
TODO
private static int ping(String host) @ L32
- 方法名:ping
- 源码定位:L32
- 返回类型:int
- 修饰符:private static
参数:
- host: String
说明:
TODO
private static long now() @ L54
- 方法名:now
- 源码定位:L54
- 返回类型:long
- 修饰符:private static
参数:
- 无
说明:
TODO
public static List<RegionPingResult> pingAllRegions() @ L58
- 方法名:pingAllRegions
- 源码定位:L58
- 返回类型:List
- 修饰符:public static
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class Ping {
public static List<RegionPingResult> ping(Ping.Region... regions) {
for (Ping.Region region : regions) {
ping(region.endpoint);
}
List<RegionPingResult> results = Lists.newArrayList();
for (Ping.Region region : regions) {
results.add(new RegionPingResult(region.name, ping(region.endpoint)));
}
results.sort(Comparator.comparingInt(RegionPingResult::ping));
return results;
}
private static int ping(String host) {
int timeout = 700;
long sum = 0L;
Socket socket = null;
for (int i = 0; i < 5; i++) {
try {
SocketAddress sockAddr = new InetSocketAddress(host, 80);
socket = new Socket();
long t1 = now();
socket.connect(sockAddr, 700);
sum += now() - t1;
} catch (Exception var12) {
sum += 700L;
} finally {
IOUtils.closeQuietly(socket);
}
}
return (int)(sum / 5.0);
}
private static long now() {
return Util.getMillis();
}
public static List<RegionPingResult> pingAllRegions() {
return ping(Ping.Region.values());
}
@OnlyIn(Dist.CLIENT)
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;
}
}
}引用的其他类
-
- 引用位置:
构造调用/返回值 - 关联成员:
RegionPingResult()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.getMillis()
- 引用位置: