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);
      }
   }
}