ProgressConsumer interface

Пакет: com.hypixel.hytale.common.util

Файл: com/hypixel/hytale/common/util/CompletableFutureUtil.java

Методы (1)

МодификаторыВозвратСигнатура
abstract void acceptvoid accept(double var1, int var3, int var4)

Исходный код

Показать/скрыть
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);
      }
   }
}