PingCommand class

Пакет: com.hypixel.hytale.server.core.command.commands.debug

Файл: com/hypixel/hytale/server/core/command/commands/debug/PingCommand.java

extends: AbstractTargetPlayerCommand

Поля (33)

МодификаторыТипИмя
private static final Message MESSAGE_COMMANDS_PING_HISTORY_CLEARED
private final DefaultArg<Integer> heightArg
long[] var10
double var10
Message var11
String var12
long var12
double var13
long var14
long var15
String var16
PacketHandler.PingInfo var16
long var17
HistoricMetric var17
long[] var18
String var19
long var20
long var22
long var24
long[] var26
long[] var27
String var28
StringBuilder var29
Message var3
String var3
Message var4
int var7
PacketHandler.PingInfo var8
int var8
HistoricMetric var9
HistoricMetric var9
long var9
private final DefaultArg<Integer> widthArg

Методы (11)

МодификаторыВозвратСигнатура
public Clearpublic Clear()
public Graphpublic Graph()
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nullable Ref<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5, @Nonnull Store<EntityStore> var6)
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nullable Ref<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5, @Nonnull Store<EntityStore> var6)
for for(int var11 = 0; var11 < var10.length; var11++)
for for(int var19 = 0; var19 < var18.length; var19++)
private void sendDetailedMessagevoid sendDetailedMessage(@Nonnull CommandContext var1, @Nonnull PlayerRef var2)
private void sendShortMessagevoid sendShortMessage(@Nonnull CommandContext var1, @Nonnull PlayerRef var2)
abstract super super("ping", "server.commands.ping.desc")
abstract super super("clear", "server.commands.ping.clear.desc")
abstract super super("graph", "server.commands.ping.graph.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.debug;

class="kw">import com.hypixel.hytale.common.util.FormatUtil;
class="kw">import com.hypixel.hytale.common.util.StringUtil;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.metrics.metric.HistoricMetric;
class="kw">import com.hypixel.hytale.protocol.packets.connection.PongType;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class PingCommand class="kw">extends AbstractTargetPlayerCommand {
   @Nonnull
   class="kw">private class="kw">final FlagArg detailFlag = this.withFlagArg("detail", "server.commands.ping.detail.desc");

   class="kw">public PingCommand() {
      super("ping", "server.commands.ping.desc");
      this.setPermissionGroups("hytale:Adventurer");
      this.addSubCommand(new PingCommand.Clear());
      this.addSubCommand(new PingCommand.Graph());
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1,
      @Nullable Ref<EntityStore> var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull PlayerRef var4,
      @Nonnull World var5,
      @Nonnull Store<EntityStore> var6
   ) {
      if (this.detailFlag.provided(var1)) {
         this.sendDetailedMessage(var1, var4);
      } else {
         this.sendShortMessage(var1, var4);
      }
   }

   class="kw">private void sendDetailedMessage(@Nonnull CommandContext var1, @Nonnull PlayerRef var2) {
      Message var3 = Message.join(Message.raw(var2.getUsername()), Message.raw(" ping:"));

      for (PongType var7 : PongType.values()) {
         PacketHandler.PingInfo var8 = var2.getPacketHandler().getPingInfo(var7);
         HistoricMetric var9 = var8.getPingMetricSet();
         long[] var10 = var9.getPeriodsNanos();
         var3.insert(Message.raw("\n" + var7.name() + ":\n"));

         for (int var11 = 0; var11 < var10.length; var11++) {
            String var12 = FormatUtil.timeUnitToString(var10[var11], TimeUnit.NANOSECONDS, true);
            double var13 = var9.getAverage(var11);
            long var15 = var9.calculateMax(var11);
            long var17 = var9.calculateMin(var11);
            String var19 = FormatUtil.simpleTimeUnitFormat(var17, var13, var15, PacketHandler.PingInfo.TIME_UNIT, TimeUnit.MILLISECONDS, 3);
            var3.insert(Message.raw("  (" + var12 + "): " + " ".repeat(Math.max(0, 24 - var19.length())) + var19 + "\n"));
         }

         var3.insert(Message.raw("  Queue: " + FormatUtil.simpleFormat(var8.getPacketQueueMetric())));
      }

      var1.sendMessage(var3);
   }

   class="kw">private void sendShortMessage(@Nonnull CommandContext var1, @Nonnull PlayerRef var2) {
      String var3 = FormatUtil.timeUnitToString(1L, TimeUnit.SECONDS, true);
      Message var4 = Message.join(Message.raw(var2.getUsername()), Message.raw(" ping  (" + var3 + "):"));

      for (PongType var8 : PongType.values()) {
         HistoricMetric var9 = var2.getPacketHandler().getPingInfo(var8).getPingMetricSet();
         double var10 = var9.getAverage(0);
         long var12 = var9.calculateMax(0);
         long var14 = var9.calculateMin(0);
         String var16 = FormatUtil.simpleTimeUnitFormat(var14, var10, var12, PacketHandler.PingInfo.TIME_UNIT, TimeUnit.MILLISECONDS, 3);
         var4.insert(Message.raw("\n" + var8.name() + ":" + " ".repeat(Math.max(0, 24 - var16.length())) + var16));
      }

      var1.sendMessage(var4);
   }

   class="kw">private class="kw">static class Clear class="kw">extends AbstractTargetPlayerCommand {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_PING_HISTORY_CLEARED = Message.translation("server.commands.ping.historyCleared");

      class="kw">public Clear() {
         super("clear", "server.commands.ping.clear.desc");
         this.setPermissionGroups("hytale:Adventurer");
         this.addAliases("reset");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1,
         @Nullable Ref<EntityStore> var2,
         @Nonnull Ref<EntityStore> var3,
         @Nonnull PlayerRef var4,
         @Nonnull World var5,
         @Nonnull Store<EntityStore> var6
      ) {
         for (PongType var10 : PongType.values()) {
            var4.getPacketHandler().getPingInfo(var10).clear();
         }

         var1.sendMessage(MESSAGE_COMMANDS_PING_HISTORY_CLEARED);
      }
   }

   class="kw">private class="kw">static class Graph class="kw">extends AbstractTargetPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final DefaultArg<Integer> widthArg = this.withDefaultArg(
         "width", "server.commands.ping.graph.width.desc", ArgTypes.INTEGER, 100, "server.commands.ping.graph.width.class="kw">default"
      );
      @Nonnull
      class="kw">private class="kw">final DefaultArg<Integer> heightArg = this.withDefaultArg(
         "height", "server.commands.ping.graph.height.desc", ArgTypes.INTEGER, 10, "server.commands.ping.graph.height.class="kw">default"
      );

      class="kw">public Graph() {
         super("graph", "server.commands.ping.graph.desc");
         this.setPermissionGroups("hytale:Adventurer");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1,
         @Nullable Ref<EntityStore> var2,
         @Nonnull Ref<EntityStore> var3,
         @Nonnull PlayerRef var4,
         @Nonnull World var5,
         @Nonnull Store<EntityStore> var6
      ) {
         int var7 = this.widthArg.get(var1);
         int var8 = this.heightArg.get(var1);
         long var9 = System.nanoTime();
         Message var11 = Message.empty();

         for (PongType var15 : PongType.values()) {
            var11.insert(var15 + ":\n");
            PacketHandler.PingInfo var16 = var4.getPacketHandler().getPingInfo(var15);
            HistoricMetric var17 = var16.getPingMetricSet();
            long[] var18 = var17.getPeriodsNanos();

            for (int var19 = 0; var19 < var18.length; var19++) {
               long var20 = var18[var19];
               long var22 = var17.calculateMax(var19);
               long var24 = var17.calculateMin(var19);
               long[] var26 = var17.getTimestamps(var19);
               long[] var27 = var17.getValues(var19);
               String var28 = FormatUtil.timeUnitToString(var20, TimeUnit.NANOSECONDS, true);
               var11.insert(Message.translation("server.commands.ping.graph.period").param("time", var28));
               StringBuilder var29 = new StringBuilder();
               StringUtil.generateGraph(
                  var29,
                  var7,
                  var8,
                  var9 - var20,
                  var9,
                  var24,
                  var22,
                  var0 -> FormatUtil.timeUnitToString(MathUtil.fastCeil(var0), PacketHandler.PingInfo.TIME_UNIT),
                  var26.length,
                  var1x -> var26[var1x],
                  var1x -> var27[var1x]
               );
               var11.insert(var29.toString());
            }
         }

         var1.sendMessage(var11);
      }
   }
}