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