CompletableFutureUtil class
Пакет: com.hypixel.hytale.common.util
Файл: com/hypixel/hytale/common/util/CompletableFutureUtil.java
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
CompletableFuture |
var0 |
|
int |
var11 |
|
int |
var12 |
|
CompletableFuture |
var4 |
|
long |
var5 |
|
|
var5 |
|
long |
var7 |
|
long |
var9 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
TailedRuntimeExceptionpublic TailedRuntimeException(Throwable var1) |
abstract |
void |
acceptvoid accept(double var1, int var3, int var4) |
|
|
for for(CompletableFuture var14 : var0) |
|
|
if if(var2 != null) |
|
|
if if(var12 < var11) |
static |
boolean |
isCanceledboolean isCanceled(Throwable var0) |
static |
void |
joinWithProgressvoid joinWithProgress(@Nonnull List<CompletableFuture<?>> var0, @Nonnull CompletableFutureUtil.ProgressConsumer var1, int var2, int var3) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.common.util;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import java.time.Duration;
class="kw">import java.util.List;
class="kw">import java.util.concurrent.CancellationException;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.CompletionException;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import java.util.function.Function;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">public class CompletableFutureUtil {
class="kw">public class="kw">static class="kw">final Function<Throwable, ?> fn = var0 -> {
if (!(var0 class="kw">instanceof CompletableFutureUtil.TailedRuntimeException)) {
((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(var0)).log("Unhandled exception! %s", Thread.currentThread());
}
throw new CompletableFutureUtil.TailedRuntimeException(var0);
};
class="kw">public CompletableFutureUtil() {
}
@Nonnull
class="kw">public class="kw">static <T> CompletableFuture<T> whenComplete(@Nonnull CompletableFuture<T> var0, @Nonnull CompletableFuture<T> var1) {
class="kw">return var0.whenComplete((var1x, var2) -> {
if (var2 != null) {
var1.completeExceptionally(var2);
} else {
var1.complete((T)var1x);
}
});
}
class="kw">public class="kw">static boolean isCanceled(Throwable var0) {
class="kw">return var0 class="kw">instanceof CancellationException
|| var0 class="kw">instanceof CompletionException && var0.getCause() != null && var0.getCause() != var0 && isCanceled(var0.getCause());
}
@Nonnull
class="kw">public class="kw">static <T> CompletableFuture<T> _catch(@Nonnull CompletableFuture<T> var0) {
class="kw">return var0.exceptionally((Function<Throwable, ? class="kw">extends T>)fn);
}
@Nonnull
class="kw">public class="kw">static <T> CompletableFuture<T> completionCanceled() {
CompletableFuture var0 = new CompletableFuture<>();
var0.cancel(false);
class="kw">return var0;
}
class="kw">public class="kw">static void joinWithProgress(@Nonnull List<CompletableFuture<?>> var0, @Nonnull CompletableFutureUtil.ProgressConsumer var1, int var2, int var3) class="kw">throws InterruptedException {
CompletableFuture var4 = CompletableFuture.allOf(var0.toArray(CompletableFuture[]::new));
long var5 = System.nanoTime();
long var9 = TimeUnit.MILLISECONDS.toNanos(var3);
int var11 = var0.size();
while (!var4.isDone()) {
Thread.sleep(Duration.ofMillis(var2));
long var7;
if (var5 + var9 < (var7 = System.nanoTime())) {
var5 = var7;
int var12 = 0;
for (CompletableFuture var14 : var0) {
if (var14.isDone()) {
var12++;
}
}
if (var12 < var11) {
var1.accept((double)var12 / var11, var12, var11);
}
}
}
var1.accept(1.0, var11, var11);
var4.join();
}
@FunctionalInterface
class="kw">public class="kw">interface ProgressConsumer {
void accept(double var1, int var3, int var4);
}
class="kw">static class TailedRuntimeException class="kw">extends RuntimeException {
class="kw">public TailedRuntimeException(Throwable var1) {
super(var1);
}
}
}