XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEServerManager

【Java】我的世界XFE服务器管理器

公开
关注 0 Fork 0 Star 0
UTF-8
package com.xfestudio.xfeservermanager.api.status;

import com.xfestudio.xfeservermanager.api.util.ApiChecks;
import java.time.Duration;
import java.time.Instant;
import java.util.Map;
import java.util.Objects;

/** One immutable sample suitable for REST and server-sent events. */
public record ServerStatusSnapshot(
        Instant sampledAt,
        Duration uptime,
        TickMetrics ticks,
        double processCpuLoad,
        MemoryMetrics heap,
        long usableDiskBytes,
        int onlinePlayers,
        int maximumPlayers,
        double averagePingMillis,
        Map<String, DimensionMetrics> dimensions
) {
    public ServerStatusSnapshot {
        Objects.requireNonNull(sampledAt, "sampledAt");
        Objects.requireNonNull(uptime, "uptime");
        if (uptime.isNegative()) {
            throw new IllegalArgumentException("uptime must be non-negative");
        }
        Objects.requireNonNull(ticks, "ticks");
        if (!Double.isFinite(processCpuLoad) || processCpuLoad < 0.0 || processCpuLoad > 1.0) {
            throw new IllegalArgumentException("processCpuLoad must be between 0 and 1");
        }
        Objects.requireNonNull(heap, "heap");
        if (usableDiskBytes < 0 || onlinePlayers < 0 || maximumPlayers < onlinePlayers
                || !Double.isFinite(averagePingMillis) || averagePingMillis < 0.0) {
            throw new IllegalArgumentException("status values must be ordered and non-negative");
        }
        dimensions = ApiChecks.immutableMap(dimensions, "dimensions");
    }
}