TelemetryDataCollector class
Пакет: com.hypixel.hytale.server.core.telemetry
Файл: com/hypixel/hytale/server/core/telemetry/TelemetryDataCollector.java
Поля (64)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
ONE_MINUTE_INDEX |
|
String |
var0 |
|
String |
var0 |
|
String |
var0 |
|
StringBuilder |
var0 |
|
HytaleServerConfig |
var0 |
|
PluginManager |
var0 |
|
Universe |
var0 |
|
Universe |
var0 |
|
MemoryMXBean |
var0 |
|
String |
var1 |
|
String |
var1 |
|
int |
var1 |
|
Enumeration |
var1 |
|
int |
var1 |
|
List |
var1 |
|
Collection |
var1 |
|
HytaleServerConfig |
var1 |
|
MemoryUsage |
var1 |
|
float |
var10 |
|
float |
var11 |
|
long |
var11 |
|
float |
var12 |
|
float |
var13 |
|
float |
var14 |
|
float |
var15 |
|
float |
var16 |
|
float |
var17 |
|
String |
var2 |
|
String |
var2 |
|
int |
var2 |
|
|
var2 |
|
NetworkInterface |
var2 |
|
Universe |
var2 |
|
List |
var2 |
|
float |
var2 |
|
int |
var2 |
|
float |
var2 |
|
RuntimeMXBean |
var3 |
|
byte[] |
var3 |
|
int |
var3 |
|
float |
var3 |
|
|
var3 |
|
int |
var3 |
|
float |
var3 |
|
String |
var4 |
|
float |
var4 |
|
int |
var4 |
|
int |
var4 |
|
String |
var5 |
|
MessageDigest |
var5 |
|
PluginManifest |
var5 |
|
int |
var5 |
|
int |
var5 |
|
long |
var5 |
|
byte[] |
var6 |
|
String |
var6 |
|
int |
var6 |
|
String |
var7 |
|
String |
var8 |
|
int |
var8 |
|
boolean |
var9 |
|
HistoricMetric |
var9 |
|
long |
var9 |
Методы (11)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(PluginBase var4 : var1) |
|
|
for for(World var7 : var1) |
|
|
if if(Constants.SINGLEPLAYER) |
|
|
if if(var3 != null) |
|
|
if if(var0 == null) |
|
|
if if(var0 == null) |
|
|
if if(var11 > var3) |
|
|
if if(var5 == 0) |
|
|
if if(var0 != null) |
|
|
if if(var9 >= 0L) |
|
|
if if(var11 >= 0L) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.telemetry;
class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.common.util.java.ManifestUtil;
class="kw">import com.hypixel.hytale.metrics.metric.HistoricMetric;
class="kw">import com.hypixel.hytale.server.core.Constants;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
class="kw">import com.hypixel.hytale.server.core.HytaleServerConfig;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.PluginBase;
class="kw">import com.hypixel.hytale.server.core.plugin.PluginManager;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.sun.management.OperatingSystemMXBean;
class="kw">import java.lang.management.GarbageCollectorMXBean;
class="kw">import java.lang.management.ManagementFactory;
class="kw">import java.lang.management.MemoryMXBean;
class="kw">import java.lang.management.MemoryUsage;
class="kw">import java.lang.management.RuntimeMXBean;
class="kw">import java.net.NetworkInterface;
class="kw">import java.nio.charset.StandardCharsets;
class="kw">import java.security.MessageDigest;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Collection;
class="kw">import java.util.Enumeration;
class="kw">import java.util.HexFormat;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">final class TelemetryDataCollector {
class="kw">private class="kw">static class="kw">final int ONE_MINUTE_INDEX = 1;
class="kw">private TelemetryDataCollector() {
}
@Nonnull
class="kw">static TelemetryPackets.ServerStartPacket collectServerStart(@Nonnull String var0, @Nonnull String var1, int var2) {
class="kw">return new TelemetryPackets.ServerStartPacket(
var0,
var1,
var2,
TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - HytaleServer.get().getBootStart()),
collectServerInfo(),
collectPlatformInfo(),
collectHardwareInfo(),
collectConfigInfo(),
collectModsInfo()
);
}
@Nonnull
class="kw">static TelemetryPackets.ServerHeartbeatPacket collectHeartbeat(
@Nonnull String var0, @Nonnull String var1, int var2, int var3, @Nonnull TelemetryService.NetworkStats var4
) {
class="kw">return new TelemetryPackets.ServerHeartbeatPacket(
var0, var1, var2, var3, collectPerformanceInfo(), collectCapacityInfo(), collectMemoryInfo(), collectNetworkInfo(var4)
);
}
@Nonnull
class="kw">private class="kw">static TelemetryPackets.ServerInfo collectServerInfo() {
String var0 = ManifestUtil.getImplementationVersion();
String var1 = ManifestUtil.getImplementationRevisionId();
String var2 = "debug";
class="kw">return new TelemetryPackets.ServerInfo(var0 != null ? var0 : "unknown", var1 != null ? var1 : "unknown", var2);
}
@Nonnull
class="kw">private class="kw">static TelemetryPackets.ServerPlatformInfo collectPlatformInfo() {
String var0 = System.getProperty("os.name", "unknown");
String var1 = System.getProperty("os.version", "unknown");
String var2 = System.getProperty("os.arch", "unknown");
RuntimeMXBean var3 = ManagementFactory.getRuntimeMXBean();
String var4 = var3.getSpecVersion();
String var5 = var3.getVmVendor();
class="kw">return new TelemetryPackets.ServerPlatformInfo(var0, var1, var2, var4, var5);
}
@Nullable
class="kw">private class="kw">static TelemetryPackets.ServerHardwareInfo collectHardwareInfo() {
if (Constants.SINGLEPLAYER) {
class="kw">return null;
}
String var0 = generateMachineIdHash();
int var1 = Runtime.getRuntime().availableProcessors();
int var2 = 0;
if (ManagementFactory.getOperatingSystemMXBean() class="kw">instanceof OperatingSystemMXBean var3) {
var2 = (int)(var3.getTotalMemorySize() / 1048576L);
}
class="kw">return new TelemetryPackets.ServerHardwareInfo(var0, var1, var2);
}
@Nonnull
class="kw">private class="kw">static String generateMachineIdHash() {
try {
StringBuilder var0 = new StringBuilder();
Enumeration var1 = NetworkInterface.getNetworkInterfaces();
while (var1.hasMoreElements()) {
NetworkInterface var2 = var1.nextElement();
byte[] var3 = var2.getHardwareAddress();
if (var3 != null) {
var0.append(HexFormat.of().formatHex(var3));
}
}
var0.append(System.getenv("COMPUTERNAME"));
var0.append(System.getenv("HOSTNAME"));
MessageDigest var5 = MessageDigest.getInstance("SHA-256");
byte[] var6 = var5.digest(var0.toString().getBytes(StandardCharsets.UTF_8));
class="kw">return HexFormat.of().formatHex(var6);
} catch (Exception var4) {
class="kw">return "unknown";
}
}
@Nonnull
class="kw">private class="kw">static TelemetryPackets.ServerConfigInfo collectConfigInfo() {
HytaleServerConfig var0 = HytaleServer.get().getConfig();
int var1 = var0.getMaxPlayers();
Universe var2 = Universe.get();
int var3 = var2 != null ? var2.getWorlds().size() : 0;
class="kw">return new TelemetryPackets.ServerConfigInfo(var1, var3, !Constants.SINGLEPLAYER);
}
@Nonnull
class="kw">private class="kw">static List<TelemetryPackets.ModInfo> collectModsInfo() {
PluginManager var0 = PluginManager.get();
if (var0 == null) {
class="kw">return List.of();
}
List var1 = var0.getPlugins();
List var2 = new ArrayList<>(var1.size());
for (PluginBase var4 : var1) {
PluginManifest var5 = var4.getManifest();
String var6 = var4.getIdentifier().toString();
String var7 = var5.getVersion() != null ? var5.getVersion().toString() : "unknown";
String var8 = var4.getType().name().toLowerCase(Locale.ROOT);
boolean var9 = var4 class="kw">instanceof JavaPlugin var10 && var10.getClassLoader().isInServerClassPath();
var2.add(new TelemetryPackets.ModInfo(var6, var7, var8, var9));
}
class="kw">return var2;
}
@Nonnull
class="kw">private class="kw">static TelemetryPackets.ServerPerformanceInfo collectPerformanceInfo() {
Universe var0 = Universe.get();
if (var0 == null) {
class="kw">return new TelemetryPackets.ServerPerformanceInfo(0.0F, 0.0F, 0.0F);
}
Collection var1 = var0.getWorlds().values();
if (var1.isEmpty()) {
class="kw">return new TelemetryPackets.ServerPerformanceInfo(0.0F, 0.0F, 0.0F);
}
float var2 = 0.0F;
float var3 = 0.0F;
float var4 = 0.0F;
int var5 = 0;
for (World var7 : var1) {
if (var7.isAlive()) {
int var8 = var7.getTps();
HistoricMetric var9 = var7.getBufferedTickLengthMetricSet();
float var10 = (float)var9.getAverage(1);
float var11 = (float)var9.calculateMax(1);
var2 += var10;
if (var11 > var3) {
var3 = var11;
}
float var12 = 1.0E9F / var8;
float var13 = var10 > 0.0F ? Math.min(100.0F, var12 / var10 * 100.0F) : 100.0F;
var4 += var13;
var5++;
}
}
if (var5 == 0) {
class="kw">return new TelemetryPackets.ServerPerformanceInfo(0.0F, 0.0F, 0.0F);
}
float var14 = var2 / var5;
float var15 = var14 / 1000000.0F;
float var16 = var3 / 1000000.0F;
float var17 = var4 / var5;
class="kw">return new TelemetryPackets.ServerPerformanceInfo(var17, var15, var16);
}
@Nonnull
class="kw">private class="kw">static TelemetryPackets.ServerCapacityInfo collectCapacityInfo() {
Universe var0 = Universe.get();
HytaleServerConfig var1 = HytaleServer.get().getConfig();
int var2 = var0 != null ? var0.getPlayerCount() : 0;
int var3 = var1 != null ? var1.getMaxPlayers() : 100;
int var4 = 0;
int var5 = 0;
int var6 = 0;
if (var0 != null) {
for (World var8 : var0.getWorlds().values()) {
if (var8.isAlive()) {
var4++;
var5 += var8.getEntityStore().getStore().getEntityCount();
var6 += var8.getChunkStore().getLoadedChunksCount();
}
}
}
class="kw">return new TelemetryPackets.ServerCapacityInfo(var2, var3, var4, var5, var6);
}
@Nonnull
class="kw">private class="kw">static TelemetryPackets.ServerMemoryInfo collectMemoryInfo() {
MemoryMXBean var0 = ManagementFactory.getMemoryMXBean();
MemoryUsage var1 = var0.getHeapMemoryUsage();
float var2 = (float)var1.getUsed() / 1048576.0F;
float var3 = (float)var1.getMax() / 1048576.0F;
int var4 = 0;
long var5 = 0L;
for (GarbageCollectorMXBean var8 : ManagementFactory.getGarbageCollectorMXBeans()) {
long var9 = var8.getCollectionCount();
long var11 = var8.getCollectionTime();
if (var9 >= 0L) {
var4 += (int)var9;
}
if (var11 >= 0L) {
var5 += var11;
}
}
class="kw">return new TelemetryPackets.ServerMemoryInfo(var2, var3, var4, var5);
}
@Nonnull
class="kw">private class="kw">static TelemetryPackets.ServerNetworkInfo collectNetworkInfo(@Nonnull TelemetryService.NetworkStats var0) {
class="kw">return new TelemetryPackets.ServerNetworkInfo(var0.sentBytesPerSecond(), var0.receivedBytesPerSecond(), var0.totalSentKb(), var0.totalReceivedKb());
}
}