PacketStatsEntry class
Пакет: com.hypixel.hytale.server.core.io
Файл: com/hypixel/hytale/server/core/io/PacketStatsRecorderImpl.java
implements: PacketStatsRecorder.PacketStatsEntry
Поля (37)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final MetricsRegistry<PacketStatsRecorderImpl.PacketStatsEntry> |
METRICS_REGISTRY |
|
private final int |
packetId |
|
private final AverageCollector |
receivedCompressedAvg |
|
private final AtomicLong |
receivedCompressedMax |
|
private final AtomicLong |
receivedCompressedMin |
|
private final AtomicLong |
receivedCompressedTotal |
|
private final AtomicInteger |
receivedCount |
|
private final Queue<PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord> |
receivedRecently |
|
private final AverageCollector |
receivedUncompressedAvg |
|
private final AtomicLong |
receivedUncompressedMax |
|
private final AtomicLong |
receivedUncompressedMin |
|
private final AtomicLong |
receivedUncompressedTotal |
|
private final AverageCollector |
sentCompressedAvg |
|
private final AtomicLong |
sentCompressedMax |
|
private final AtomicLong |
sentCompressedMin |
|
private final AtomicLong |
sentCompressedTotal |
|
private final AtomicInteger |
sentCount |
|
private final Queue<PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord> |
sentRecently |
|
private final AverageCollector |
sentUncompressedAvg |
|
private final AtomicLong |
sentUncompressedMax |
|
private final AtomicLong |
sentUncompressedMin |
|
private final AtomicLong |
sentUncompressedTotal |
|
PacketRegistry.PacketInfo |
var1 |
|
int |
var10 |
|
|
var10 |
|
int |
var2 |
|
long |
var3 |
|
long |
var3 |
|
long |
var3 |
|
long |
var4 |
|
long |
var5 |
|
int |
var7 |
|
|
var7 |
|
int |
var8 |
|
|
var8 |
|
int |
var9 |
|
|
var9 |
Методы (31)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public record |
SizeRecordpublic record SizeRecord(long nanos, int uncompressedSize, int compressedSize) |
|
private PacketStatsRecorder.RecentStats |
computeRecentStatsprivate PacketStatsRecorder.RecentStats computeRecentStats(Queue<PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord> var1) |
|
|
for for(PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord var12 : var1) |
abstract |
|
for for(PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord var6 = var1.peek() |
|
public String |
getNamepublic String getName() |
|
public int |
getPacketIdpublic int getPacketId() |
|
public double |
getReceivedCompressedAvgpublic double getReceivedCompressedAvg() |
|
public long |
getReceivedCompressedMaxpublic long getReceivedCompressedMax() |
|
public long |
getReceivedCompressedMinpublic long getReceivedCompressedMin() |
|
public long |
getReceivedCompressedTotalpublic long getReceivedCompressedTotal() |
|
public int |
getReceivedCountpublic int getReceivedCount() |
|
public PacketStatsRecorder.RecentStats |
getReceivedRecentlypublic PacketStatsRecorder.RecentStats getReceivedRecently() |
|
public double |
getReceivedUncompressedAvgpublic double getReceivedUncompressedAvg() |
|
public long |
getReceivedUncompressedMaxpublic long getReceivedUncompressedMax() |
|
public long |
getReceivedUncompressedMinpublic long getReceivedUncompressedMin() |
|
public long |
getReceivedUncompressedTotalpublic long getReceivedUncompressedTotal() |
|
public double |
getSentCompressedAvgpublic double getSentCompressedAvg() |
|
public long |
getSentCompressedMaxpublic long getSentCompressedMax() |
|
public long |
getSentCompressedMinpublic long getSentCompressedMin() |
|
public long |
getSentCompressedTotalpublic long getSentCompressedTotal() |
|
public int |
getSentCountpublic int getSentCount() |
|
public PacketStatsRecorder.RecentStats |
getSentRecentlypublic PacketStatsRecorder.RecentStats getSentRecently() |
|
public double |
getSentUncompressedAvgpublic double getSentUncompressedAvg() |
|
public long |
getSentUncompressedMaxpublic long getSentUncompressedMax() |
|
public long |
getSentUncompressedMinpublic long getSentUncompressedMin() |
|
public long |
getSentUncompressedTotalpublic long getSentUncompressedTotal() |
|
public boolean |
hasDatapublic boolean hasData() |
|
private void |
pruneOldprivate void pruneOld(Queue<PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord> var1, long var2) |
|
void |
recordReceivevoid recordReceive(int var1, int var2) |
|
void |
recordSendvoid recordSend(int var1, int var2) |
|
public void |
resetpublic void reset() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.io;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.metrics.MetricsRegistry;
class="kw">import com.hypixel.hytale.metrics.metric.AverageCollector;
class="kw">import com.hypixel.hytale.protocol.PacketRegistry;
class="kw">import com.hypixel.hytale.protocol.io.PacketStatsRecorder;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Queue;
class="kw">import java.util.concurrent.ConcurrentLinkedQueue;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import java.util.concurrent.atomic.AtomicInteger;
class="kw">import java.util.concurrent.atomic.AtomicLong;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class PacketStatsRecorderImpl class="kw">implements PacketStatsRecorder {
class="kw">public class="kw">static class="kw">final MetricsRegistry<PacketStatsRecorderImpl> METRICS_REGISTRY = new MetricsRegistry<PacketStatsRecorderImpl>().register("Packets", var0 -> {
ArrayList var1 = new ArrayList<>();
for (int var2 = 0; var2 < 512; var2++) {
PacketStatsRecorderImpl.PacketStatsEntry var3 = var0.entries[var2];
if (var3.hasData()) {
var1.add(var3);
}
}
class="kw">return var1.toArray(PacketStatsRecorderImpl.PacketStatsEntry[]::new);
}, new ArrayCodec<>(PacketStatsRecorderImpl.PacketStatsEntry.METRICS_REGISTRY, PacketStatsRecorderImpl.PacketStatsEntry[]::new));
class="kw">private class="kw">final PacketStatsRecorderImpl.PacketStatsEntry[] entries = new PacketStatsRecorderImpl.PacketStatsEntry[512];
class="kw">public PacketStatsRecorderImpl() {
for (int var1 = 0; var1 < this.entries.length; var1++) {
this.entries[var1] = new PacketStatsRecorderImpl.PacketStatsEntry(var1);
}
}
@Override
class="kw">public void recordSend(int var1, int var2, int var3) {
if (var1 >= 0 && var1 < this.entries.length) {
this.entries[var1].recordSend(var2, var3);
}
}
@Override
class="kw">public void recordReceive(int var1, int var2, int var3) {
if (var1 >= 0 && var1 < this.entries.length) {
this.entries[var1].recordReceive(var2, var3);
}
}
@Nonnull
class="kw">public PacketStatsRecorderImpl.PacketStatsEntry getEntry(int var1) {
class="kw">return this.entries[var1];
}
class="kw">public class="kw">static class PacketStatsEntry class="kw">implements PacketStatsRecorder.PacketStatsEntry {
class="kw">public class="kw">static class="kw">final MetricsRegistry<PacketStatsRecorderImpl.PacketStatsEntry> METRICS_REGISTRY = new MetricsRegistry<PacketStatsRecorderImpl.PacketStatsEntry>()
.register("PacketId", PacketStatsRecorderImpl.PacketStatsEntry::getPacketId, Codec.INTEGER)
.register("Name", PacketStatsRecorderImpl.PacketStatsEntry::getName, Codec.STRING)
.register("SentCount", PacketStatsRecorderImpl.PacketStatsEntry::getSentCount, Codec.INTEGER)
.register("SentUncompressedTotal", PacketStatsRecorderImpl.PacketStatsEntry::getSentUncompressedTotal, Codec.LONG)
.register("SentCompressedTotal", PacketStatsRecorderImpl.PacketStatsEntry::getSentCompressedTotal, Codec.LONG)
.register("SentUncompressedMin", PacketStatsRecorderImpl.PacketStatsEntry::getSentUncompressedMin, Codec.LONG)
.register("SentUncompressedMax", PacketStatsRecorderImpl.PacketStatsEntry::getSentUncompressedMax, Codec.LONG)
.register("SentCompressedMin", PacketStatsRecorderImpl.PacketStatsEntry::getSentCompressedMin, Codec.LONG)
.register("SentCompressedMax", PacketStatsRecorderImpl.PacketStatsEntry::getSentCompressedMax, Codec.LONG)
.register("ReceivedCount", PacketStatsRecorderImpl.PacketStatsEntry::getReceivedCount, Codec.INTEGER)
.register("ReceivedUncompressedTotal", PacketStatsRecorderImpl.PacketStatsEntry::getReceivedUncompressedTotal, Codec.LONG)
.register("ReceivedCompressedTotal", PacketStatsRecorderImpl.PacketStatsEntry::getReceivedCompressedTotal, Codec.LONG)
.register("ReceivedUncompressedMin", PacketStatsRecorderImpl.PacketStatsEntry::getReceivedUncompressedMin, Codec.LONG)
.register("ReceivedUncompressedMax", PacketStatsRecorderImpl.PacketStatsEntry::getReceivedUncompressedMax, Codec.LONG)
.register("ReceivedCompressedMin", PacketStatsRecorderImpl.PacketStatsEntry::getReceivedCompressedMin, Codec.LONG)
.register("ReceivedCompressedMax", PacketStatsRecorderImpl.PacketStatsEntry::getReceivedCompressedMax, Codec.LONG);
class="kw">private class="kw">final int packetId;
class="kw">private class="kw">final AtomicInteger sentCount = new AtomicInteger();
class="kw">private class="kw">final AtomicLong sentUncompressedTotal = new AtomicLong();
class="kw">private class="kw">final AtomicLong sentCompressedTotal = new AtomicLong();
class="kw">private class="kw">final AtomicLong sentUncompressedMin = new AtomicLong(Long.MAX_VALUE);
class="kw">private class="kw">final AtomicLong sentUncompressedMax = new AtomicLong();
class="kw">private class="kw">final AtomicLong sentCompressedMin = new AtomicLong(Long.MAX_VALUE);
class="kw">private class="kw">final AtomicLong sentCompressedMax = new AtomicLong();
class="kw">private class="kw">final AverageCollector sentUncompressedAvg = new AverageCollector();
class="kw">private class="kw">final AverageCollector sentCompressedAvg = new AverageCollector();
class="kw">private class="kw">final Queue<PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord> sentRecently = new ConcurrentLinkedQueue<>();
class="kw">private class="kw">final AtomicInteger receivedCount = new AtomicInteger();
class="kw">private class="kw">final AtomicLong receivedUncompressedTotal = new AtomicLong();
class="kw">private class="kw">final AtomicLong receivedCompressedTotal = new AtomicLong();
class="kw">private class="kw">final AtomicLong receivedUncompressedMin = new AtomicLong(Long.MAX_VALUE);
class="kw">private class="kw">final AtomicLong receivedUncompressedMax = new AtomicLong();
class="kw">private class="kw">final AtomicLong receivedCompressedMin = new AtomicLong(Long.MAX_VALUE);
class="kw">private class="kw">final AtomicLong receivedCompressedMax = new AtomicLong();
class="kw">private class="kw">final AverageCollector receivedUncompressedAvg = new AverageCollector();
class="kw">private class="kw">final AverageCollector receivedCompressedAvg = new AverageCollector();
class="kw">private class="kw">final Queue<PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord> receivedRecently = new ConcurrentLinkedQueue<>();
class="kw">public PacketStatsEntry(int var1) {
this.packetId = var1;
}
void recordSend(int var1, int var2) {
this.sentCount.incrementAndGet();
this.sentUncompressedTotal.addAndGet(var1);
this.sentCompressedTotal.addAndGet(var2);
this.sentUncompressedMin.accumulateAndGet(var1, Math::min);
this.sentUncompressedMax.accumulateAndGet(var1, Math::max);
this.sentCompressedMin.accumulateAndGet(var2, Math::min);
this.sentCompressedMax.accumulateAndGet(var2, Math::max);
this.sentUncompressedAvg.add(var1);
this.sentCompressedAvg.add(var2);
long var3 = System.nanoTime();
this.sentRecently.add(new PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord(var3, var1, var2));
this.pruneOld(this.sentRecently, var3);
}
void recordReceive(int var1, int var2) {
this.receivedCount.incrementAndGet();
this.receivedUncompressedTotal.addAndGet(var1);
this.receivedCompressedTotal.addAndGet(var2);
this.receivedUncompressedMin.accumulateAndGet(var1, Math::min);
this.receivedUncompressedMax.accumulateAndGet(var1, Math::max);
this.receivedCompressedMin.accumulateAndGet(var2, Math::min);
this.receivedCompressedMax.accumulateAndGet(var2, Math::max);
this.receivedUncompressedAvg.add(var1);
this.receivedCompressedAvg.add(var2);
long var3 = System.nanoTime();
this.receivedRecently.add(new PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord(var3, var1, var2));
this.pruneOld(this.receivedRecently, var3);
}
class="kw">private void pruneOld(Queue<PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord> var1, long var2) {
long var4 = var2 - TimeUnit.SECONDS.toNanos(30L);
for (PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord var6 = var1.peek(); var6 != null && var6.nanos < var4; var6 = var1.peek()) {
var1.poll();
}
}
@Override
class="kw">public boolean hasData() {
class="kw">return this.sentCount.get() > 0 || this.receivedCount.get() > 0;
}
@Override
class="kw">public int getPacketId() {
class="kw">return this.packetId;
}
@Nullable
@Override
class="kw">public String getName() {
PacketRegistry.PacketInfo var1 = PacketRegistry.all().get(this.packetId);
class="kw">return var1 != null ? var1.name() : null;
}
@Override
class="kw">public int getSentCount() {
class="kw">return this.sentCount.get();
}
@Override
class="kw">public long getSentUncompressedTotal() {
class="kw">return this.sentUncompressedTotal.get();
}
@Override
class="kw">public long getSentCompressedTotal() {
class="kw">return this.sentCompressedTotal.get();
}
@Override
class="kw">public long getSentUncompressedMin() {
class="kw">return this.sentCount.get() > 0 ? this.sentUncompressedMin.get() : 0L;
}
@Override
class="kw">public long getSentUncompressedMax() {
class="kw">return this.sentUncompressedMax.get();
}
@Override
class="kw">public long getSentCompressedMin() {
class="kw">return this.sentCount.get() > 0 ? this.sentCompressedMin.get() : 0L;
}
@Override
class="kw">public long getSentCompressedMax() {
class="kw">return this.sentCompressedMax.get();
}
@Override
class="kw">public double getSentUncompressedAvg() {
class="kw">return this.sentUncompressedAvg.get();
}
@Override
class="kw">public double getSentCompressedAvg() {
class="kw">return this.sentCompressedAvg.get();
}
@Override
class="kw">public int getReceivedCount() {
class="kw">return this.receivedCount.get();
}
@Override
class="kw">public long getReceivedUncompressedTotal() {
class="kw">return this.receivedUncompressedTotal.get();
}
@Override
class="kw">public long getReceivedCompressedTotal() {
class="kw">return this.receivedCompressedTotal.get();
}
@Override
class="kw">public long getReceivedUncompressedMin() {
class="kw">return this.receivedCount.get() > 0 ? this.receivedUncompressedMin.get() : 0L;
}
@Override
class="kw">public long getReceivedUncompressedMax() {
class="kw">return this.receivedUncompressedMax.get();
}
@Override
class="kw">public long getReceivedCompressedMin() {
class="kw">return this.receivedCount.get() > 0 ? this.receivedCompressedMin.get() : 0L;
}
@Override
class="kw">public long getReceivedCompressedMax() {
class="kw">return this.receivedCompressedMax.get();
}
@Override
class="kw">public double getReceivedUncompressedAvg() {
class="kw">return this.receivedUncompressedAvg.get();
}
@Override
class="kw">public double getReceivedCompressedAvg() {
class="kw">return this.receivedCompressedAvg.get();
}
@Nonnull
@Override
class="kw">public PacketStatsRecorder.RecentStats getSentRecently() {
class="kw">return this.computeRecentStats(this.sentRecently);
}
@Nonnull
@Override
class="kw">public PacketStatsRecorder.RecentStats getReceivedRecently() {
class="kw">return this.computeRecentStats(this.receivedRecently);
}
class="kw">private PacketStatsRecorder.RecentStats computeRecentStats(Queue<PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord> var1) {
int var2 = 0;
long var3 = 0L;
long var5 = 0L;
int var7 = Integer.MAX_VALUE;
int var8 = 0;
int var9 = Integer.MAX_VALUE;
int var10 = 0;
for (PacketStatsRecorderImpl.PacketStatsEntry.SizeRecord var12 : var1) {
var2++;
var3 += var12.uncompressedSize;
var5 += var12.compressedSize;
var7 = Math.min(var7, var12.uncompressedSize);
var8 = Math.max(var8, var12.uncompressedSize);
var9 = Math.min(var9, var12.compressedSize);
var10 = Math.max(var10, var12.compressedSize);
}
class="kw">return var2 == 0 ? PacketStatsRecorder.RecentStats.EMPTY : new PacketStatsRecorder.RecentStats(var2, var3, var5, var7, var8, var9, var10);
}
class="kw">public void reset() {
this.sentCount.set(0);
this.sentUncompressedTotal.set(0L);
this.sentCompressedTotal.set(0L);
this.sentUncompressedMin.set(Long.MAX_VALUE);
this.sentUncompressedMax.set(0L);
this.sentCompressedMin.set(Long.MAX_VALUE);
this.sentCompressedMax.set(0L);
this.sentUncompressedAvg.clear();
this.sentCompressedAvg.clear();
this.sentRecently.clear();
this.receivedCount.set(0);
this.receivedUncompressedTotal.set(0L);
this.receivedCompressedTotal.set(0L);
this.receivedUncompressedMin.set(Long.MAX_VALUE);
this.receivedUncompressedMax.set(0L);
this.receivedCompressedMin.set(Long.MAX_VALUE);
this.receivedCompressedMax.set(0L);
this.receivedUncompressedAvg.clear();
this.receivedCompressedAvg.clear();
this.receivedRecently.clear();
}
class="kw">public record SizeRecord(long nanos, int uncompressedSize, int compressedSize) {
class="kw">public SizeRecord {
}
}
}
}