60 lines
1.9 KiB
Java
60 lines
1.9 KiB
Java
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 p_364709_) {
|
|
if (SharedConstants.IS_RUNNING_IN_IDE) {
|
|
return p_369604_ -> this.service.execute(() -> {
|
|
Thread thread = Thread.currentThread();
|
|
String s = thread.getName();
|
|
thread.setName(p_364709_);
|
|
|
|
try (Zone zone = TracyClient.beginZone(p_364709_, SharedConstants.IS_RUNNING_IN_IDE)) {
|
|
p_369604_.run();
|
|
} finally {
|
|
thread.setName(s);
|
|
}
|
|
});
|
|
} else {
|
|
return (TracyClient.isAvailable() ? p_366279_ -> this.service.execute(() -> {
|
|
try (Zone zone = TracyClient.beginZone(p_364709_, SharedConstants.IS_RUNNING_IN_IDE)) {
|
|
p_366279_.run();
|
|
}
|
|
}) : this.service);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void execute(Runnable p_362236_) {
|
|
this.service.execute(wrapUnnamed(p_362236_));
|
|
}
|
|
|
|
public void shutdownAndAwait(long p_367055_, TimeUnit p_369186_) {
|
|
this.service.shutdown();
|
|
|
|
boolean flag;
|
|
try {
|
|
flag = this.service.awaitTermination(p_367055_, p_369186_);
|
|
} catch (InterruptedException interruptedexception) {
|
|
flag = false;
|
|
}
|
|
|
|
if (!flag) {
|
|
this.service.shutdownNow();
|
|
}
|
|
}
|
|
|
|
private static Runnable wrapUnnamed(Runnable p_362176_) {
|
|
return !TracyClient.isAvailable() ? p_362176_ : () -> {
|
|
try (Zone zone = TracyClient.beginZone("task", SharedConstants.IS_RUNNING_IN_IDE)) {
|
|
p_362176_.run();
|
|
}
|
|
};
|
|
}
|
|
}
|