package net.minecraft; import com.mojang.jtracy.TracyClient; import com.mojang.jtracy.Zone; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; public record TracingExecutor(ExecutorService service) implements Executor { public Executor forName(String name) { if (SharedConstants.IS_RUNNING_IN_IDE) { return runnable -> this.service.execute(() -> { Thread thread = Thread.currentThread(); String string2 = thread.getName(); thread.setName(name); try (Zone zone = TracyClient.beginZone(name, SharedConstants.IS_RUNNING_IN_IDE)) { runnable.run(); } finally { thread.setName(string2); } }); } else { return (Executor)(TracyClient.isAvailable() ? runnable -> this.service.execute(() -> { try (Zone zone = TracyClient.beginZone(name, SharedConstants.IS_RUNNING_IN_IDE)) { runnable.run(); } }) : this.service); } } public void execute(Runnable runnable) { this.service.execute(wrapUnnamed(runnable)); } public void shutdownAndAwait(long timeout, TimeUnit unit) { this.service.shutdown(); boolean bl; try { bl = this.service.awaitTermination(timeout, unit); } catch (InterruptedException var6) { bl = false; } if (!bl) { this.service.shutdownNow(); } } private static Runnable wrapUnnamed(Runnable task) { return !TracyClient.isAvailable() ? task : () -> { try (Zone zone = TracyClient.beginZone("task", SharedConstants.IS_RUNNING_IN_IDE)) { task.run(); } }; } }