minecraft-src/net/minecraft/util/profiling/jfr/event/NetworkSummaryEvent.java
2025-07-04 01:41:11 +03:00

87 lines
2.6 KiB
Java

package net.minecraft.util.profiling.jfr.event;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import jdk.jfr.Category;
import jdk.jfr.DataAmount;
import jdk.jfr.Event;
import jdk.jfr.EventType;
import jdk.jfr.Label;
import jdk.jfr.Name;
import jdk.jfr.Period;
import jdk.jfr.StackTrace;
import net.minecraft.obfuscate.DontObfuscate;
@Name("minecraft.NetworkSummary")
@Label("Network Summary")
@Category({"Minecraft", "Network"})
@StackTrace(false)
@Period("10 s")
@DontObfuscate
public class NetworkSummaryEvent extends Event {
public static final String EVENT_NAME = "minecraft.NetworkSummary";
public static final EventType TYPE = EventType.getEventType(NetworkSummaryEvent.class);
@Name("remoteAddress")
@Label("Remote Address")
public final String remoteAddress;
@Name("sentBytes")
@Label("Sent Bytes")
@DataAmount
public long sentBytes;
@Name("sentPackets")
@Label("Sent Packets")
public int sentPackets;
@Name("receivedBytes")
@Label("Received Bytes")
@DataAmount
public long receivedBytes;
@Name("receivedPackets")
@Label("Received Packets")
public int receivedPackets;
public NetworkSummaryEvent(String string) {
this.remoteAddress = string;
}
public static final class Fields {
public static final String REMOTE_ADDRESS = "remoteAddress";
public static final String SENT_BYTES = "sentBytes";
private static final String SENT_PACKETS = "sentPackets";
public static final String RECEIVED_BYTES = "receivedBytes";
private static final String RECEIVED_PACKETS = "receivedPackets";
private Fields() {
}
}
public static final class SumAggregation {
private final AtomicLong sentBytes = new AtomicLong();
private final AtomicInteger sentPackets = new AtomicInteger();
private final AtomicLong receivedBytes = new AtomicLong();
private final AtomicInteger receivedPackets = new AtomicInteger();
private final NetworkSummaryEvent event;
public SumAggregation(String remoteAddress) {
this.event = new NetworkSummaryEvent(remoteAddress);
this.event.begin();
}
public void trackSentPacket(int delta) {
this.sentPackets.incrementAndGet();
this.sentBytes.addAndGet(delta);
}
public void trackReceivedPacket(int delta) {
this.receivedPackets.incrementAndGet();
this.receivedBytes.addAndGet(delta);
}
public void commitEvent() {
this.event.sentBytes = this.sentBytes.get();
this.event.sentPackets = this.sentPackets.get();
this.event.receivedBytes = this.receivedBytes.get();
this.event.receivedPackets = this.receivedPackets.get();
this.event.commit();
}
}
}