From a8f12ae847be03b51810f65437649f085394f0cb Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 19 Dec 2021 19:52:25 -0700 Subject: [PATCH] implement profiler command --- .../com/dfsek/terra/addon/InternalAddon.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/addon/InternalAddon.java b/common/implementation/base/src/main/java/com/dfsek/terra/addon/InternalAddon.java index 781e9c448..0517cc8f9 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/addon/InternalAddon.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/addon/InternalAddon.java @@ -117,7 +117,34 @@ public class InternalAddon implements BaseAddon { logger.error("Terra failed to reload."); context.getSender().sendMessage("Terra failed to reload. See logs for more information."); } - })); + })) + .command(manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) + .literal("start", ArgumentDescription.of("Start profiling"), "st") + .handler(context -> { + platform.getProfiler().start(); + context.getSender().sendMessage("Profiling started."); + })) + .command(manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) + .literal("stop", ArgumentDescription.of("Stop profiling"), "s") + .handler(context -> { + platform.getProfiler().stop(); + context.getSender().sendMessage("Profiling stopped."); + })) + .command(manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) + .literal("query", ArgumentDescription.of("Query profiler results"), "q") + .handler(context -> { + StringBuilder data = new StringBuilder("Terra Profiler data: \n"); + platform.getProfiler().getTimings().forEach((id, timings) -> data.append(id).append(": ").append(timings.toString()).append('\n')); + logger.info(data.toString()); + context.getSender().sendMessage("Profiling data dumped to console."); + })) + .command(manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) + .literal("reset", ArgumentDescription.of("Reset the profiler"), "r") + .handler(context -> { + platform.getProfiler().reset(); + context.getSender().sendMessage("Profiler reset."); + })) + ; });