SummaryReporter.java

net.minecraft.util.profiling.jfr.SummaryReporter

信息

  • 全限定名:net.minecraft.util.profiling.jfr.SummaryReporter
  • 类型:public class
  • 包:net.minecraft.util.profiling.jfr
  • 源码路径:src/main/java/net/minecraft/util/profiling/jfr/SummaryReporter.java
  • 起始行号:L15
  • 职责:

    TODO

字段/常量

  • LOGGER

    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L16
    • 说明:

      TODO

  • onDeregistration

    • 类型: Runnable
    • 修饰符: private final
    • 源码定位: L17
    • 说明:

      TODO

内部类/嵌套类型

构造器

protected SummaryReporter(Runnable onDeregistration) @ L19

  • 构造器名:SummaryReporter
  • 源码定位:L19
  • 修饰符:protected

参数:

  • onDeregistration: Runnable

说明:

TODO

方法

下面的方法块按源码顺序生成。

public void recordingStopped(Path result) @ L23

  • 方法名:recordingStopped
  • 源码定位:L23
  • 返回类型:void
  • 修饰符:public

参数:

  • result: Path

说明:

TODO

private static void infoWithFallback(Supplier<String> message) @ L47

  • 方法名:infoWithFallback
  • 源码定位:L47
  • 返回类型:void
  • 修饰符:private static

参数:

  • message: Supplier

说明:

TODO

private static void warnWithFallback(Supplier<String> message, Throwable t) @ L55

  • 方法名:warnWithFallback
  • 源码定位:L55
  • 返回类型:void
  • 修饰符:private static

参数:

  • message: Supplier
  • t: Throwable

说明:

TODO

代码

public class SummaryReporter {
    private static final Logger LOGGER = LogUtils.getLogger();
    private final Runnable onDeregistration;
 
    protected SummaryReporter(Runnable onDeregistration) {
        this.onDeregistration = onDeregistration;
    }
 
    public void recordingStopped(@Nullable Path result) {
        if (result != null) {
            this.onDeregistration.run();
            infoWithFallback(() -> "Dumped flight recorder profiling to " + result);
 
            JfrStatsResult statsResult;
            try {
                statsResult = JfrStatsParser.parse(result);
            } catch (Throwable var5) {
                warnWithFallback(() -> "Failed to parse JFR recording", var5);
                return;
            }
 
            try {
                infoWithFallback(statsResult::asJson);
                Path jsonReport = result.resolveSibling("jfr-report-" + StringUtils.substringBefore(result.getFileName().toString(), ".jfr") + ".json");
                Files.writeString(jsonReport, statsResult.asJson(), StandardOpenOption.CREATE);
                infoWithFallback(() -> "Dumped recording summary to " + jsonReport);
            } catch (Throwable var4) {
                warnWithFallback(() -> "Failed to output JFR report", var4);
            }
        }
    }
 
    private static void infoWithFallback(Supplier<String> message) {
        if (LogUtils.isLoggerActive()) {
            LOGGER.info(message.get());
        } else {
            Bootstrap.realStdoutPrintln(message.get());
        }
    }
 
    private static void warnWithFallback(Supplier<String> message, Throwable t) {
        if (LogUtils.isLoggerActive()) {
            LOGGER.warn(message.get(), t);
        } else {
            Bootstrap.realStdoutPrintln(message.get());
            t.printStackTrace(Bootstrap.STDOUT);
        }
    }
}

引用的其他类

  • Bootstrap

    • 引用位置: 方法调用
    • 关联成员: Bootstrap.realStdoutPrintln()
  • JfrStatsParser

    • 引用位置: 方法调用
    • 关联成员: JfrStatsParser.parse()