package com.google.common.util.concurrent; import com.google.common.base.Function; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.AbstractFuture; import com.google.common.util.concurrent.CollectionFuture; import com.google.common.util.concurrent.ImmediateFuture; import com.google.common.util.concurrent.internal.InternalFutureFailureAccess; import com.google.common.util.concurrent.internal.InternalFutures; import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.CheckForNull; @ElementTypesAreNonnullByDefault /* loaded from: classes3.dex */ public final class Futures extends GwtFuturesCatchingSpecialization { private Futures() { } public static ListenableFuture immediateFuture(@ParametricNullness V v) { if (v == null) { return (ListenableFuture) ImmediateFuture.NULL; } return new ImmediateFuture(v); } public static ListenableFuture immediateVoidFuture() { return ImmediateFuture.NULL; } public static ListenableFuture immediateFailedFuture(Throwable th) { Preconditions.checkNotNull(th); return new ImmediateFuture.ImmediateFailedFuture(th); } public static ListenableFuture immediateCancelledFuture() { ImmediateFuture.ImmediateCancelledFuture immediateCancelledFuture = ImmediateFuture.ImmediateCancelledFuture.INSTANCE; return immediateCancelledFuture != null ? immediateCancelledFuture : new ImmediateFuture.ImmediateCancelledFuture(); } public static ListenableFuture submit(Callable callable, Executor executor) { TrustedListenableFutureTask create = TrustedListenableFutureTask.create(callable); executor.execute(create); return create; } public static ListenableFuture submit(Runnable runnable, Executor executor) { TrustedListenableFutureTask create = TrustedListenableFutureTask.create(runnable, null); executor.execute(create); return create; } public static ListenableFuture submitAsync(AsyncCallable asyncCallable, Executor executor) { TrustedListenableFutureTask create = TrustedListenableFutureTask.create(asyncCallable); executor.execute(create); return create; } public static ListenableFuture scheduleAsync(AsyncCallable asyncCallable, long j, TimeUnit timeUnit, ScheduledExecutorService scheduledExecutorService) { TrustedListenableFutureTask create = TrustedListenableFutureTask.create(asyncCallable); final ScheduledFuture schedule = scheduledExecutorService.schedule(create, j, timeUnit); create.addListener(new Runnable() { // from class: com.google.common.util.concurrent.Futures.1 @Override // java.lang.Runnable public void run() { schedule.cancel(false); } }, MoreExecutors.directExecutor()); return create; } public static ListenableFuture catching(ListenableFuture listenableFuture, Class cls, Function function, Executor executor) { return AbstractCatchingFuture.create(listenableFuture, cls, function, executor); } public static ListenableFuture catchingAsync(ListenableFuture listenableFuture, Class cls, AsyncFunction asyncFunction, Executor executor) { return AbstractCatchingFuture.create(listenableFuture, cls, asyncFunction, executor); } public static ListenableFuture withTimeout(ListenableFuture listenableFuture, long j, TimeUnit timeUnit, ScheduledExecutorService scheduledExecutorService) { return listenableFuture.isDone() ? listenableFuture : TimeoutFuture.create(listenableFuture, j, timeUnit, scheduledExecutorService); } public static ListenableFuture transformAsync(ListenableFuture listenableFuture, AsyncFunction asyncFunction, Executor executor) { return AbstractTransformFuture.create(listenableFuture, asyncFunction, executor); } public static ListenableFuture transform(ListenableFuture listenableFuture, Function function, Executor executor) { return AbstractTransformFuture.create(listenableFuture, function, executor); } public static Future lazyTransform(final Future future, final Function function) { Preconditions.checkNotNull(future); Preconditions.checkNotNull(function); return new Future() { // from class: com.google.common.util.concurrent.Futures.2 @Override // java.util.concurrent.Future public boolean cancel(boolean z) { return future.cancel(z); } @Override // java.util.concurrent.Future public boolean isCancelled() { return future.isCancelled(); } @Override // java.util.concurrent.Future public boolean isDone() { return future.isDone(); } @Override // java.util.concurrent.Future public O get() throws InterruptedException, ExecutionException { return applyTransformation(future.get()); } @Override // java.util.concurrent.Future public O get(long j, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException { return applyTransformation(future.get(j, timeUnit)); } private O applyTransformation(I i) throws ExecutionException { try { return (O) function.apply(i); } catch (Throwable th) { throw new ExecutionException(th); } } }; } @SafeVarargs public static ListenableFuture> allAsList(ListenableFuture... listenableFutureArr) { return new CollectionFuture.ListFuture(ImmutableList.copyOf(listenableFutureArr), true); } public static ListenableFuture> allAsList(Iterable> iterable) { return new CollectionFuture.ListFuture(ImmutableList.copyOf(iterable), true); } @SafeVarargs public static FutureCombiner whenAllComplete(ListenableFuture... listenableFutureArr) { return new FutureCombiner<>(false, ImmutableList.copyOf(listenableFutureArr)); } public static FutureCombiner whenAllComplete(Iterable> iterable) { return new FutureCombiner<>(false, ImmutableList.copyOf(iterable)); } @SafeVarargs public static FutureCombiner whenAllSucceed(ListenableFuture... listenableFutureArr) { return new FutureCombiner<>(true, ImmutableList.copyOf(listenableFutureArr)); } public static FutureCombiner whenAllSucceed(Iterable> iterable) { return new FutureCombiner<>(true, ImmutableList.copyOf(iterable)); } /* loaded from: classes3.dex */ public static final class FutureCombiner { private final boolean allMustSucceed; private final ImmutableList> futures; private FutureCombiner(boolean z, ImmutableList> immutableList) { this.allMustSucceed = z; this.futures = immutableList; } public ListenableFuture callAsync(AsyncCallable asyncCallable, Executor executor) { return new CombinedFuture(this.futures, this.allMustSucceed, executor, asyncCallable); } public ListenableFuture call(Callable callable, Executor executor) { return new CombinedFuture(this.futures, this.allMustSucceed, executor, callable); } public ListenableFuture run(final Runnable runnable, Executor executor) { return call(new Callable(this) { // from class: com.google.common.util.concurrent.Futures.FutureCombiner.1 @Override // java.util.concurrent.Callable @CheckForNull public Void call() throws Exception { runnable.run(); return null; } }, executor); } } public static ListenableFuture nonCancellationPropagating(ListenableFuture listenableFuture) { if (listenableFuture.isDone()) { return listenableFuture; } NonCancellationPropagatingFuture nonCancellationPropagatingFuture = new NonCancellationPropagatingFuture(listenableFuture); listenableFuture.addListener(nonCancellationPropagatingFuture, MoreExecutors.directExecutor()); return nonCancellationPropagatingFuture; } /* loaded from: classes3.dex */ private static final class NonCancellationPropagatingFuture extends AbstractFuture.TrustedFuture implements Runnable { @CheckForNull private ListenableFuture delegate; /* JADX INFO: Access modifiers changed from: protected */ @Override // com.google.common.util.concurrent.AbstractFuture public void afterDone() { this.delegate = null; } NonCancellationPropagatingFuture(ListenableFuture listenableFuture) { this.delegate = listenableFuture; } @Override // java.lang.Runnable public void run() { ListenableFuture listenableFuture = this.delegate; if (listenableFuture != null) { setFuture(listenableFuture); } } /* JADX INFO: Access modifiers changed from: protected */ @Override // com.google.common.util.concurrent.AbstractFuture @CheckForNull public String pendingToString() { ListenableFuture listenableFuture = this.delegate; if (listenableFuture == null) { return null; } String valueOf = String.valueOf(listenableFuture); return new StringBuilder(String.valueOf(valueOf).length() + 11).append("delegate=[").append(valueOf).append("]").toString(); } } @SafeVarargs public static ListenableFuture> successfulAsList(ListenableFuture... listenableFutureArr) { return new CollectionFuture.ListFuture(ImmutableList.copyOf(listenableFutureArr), false); } public static ListenableFuture> successfulAsList(Iterable> iterable) { return new CollectionFuture.ListFuture(ImmutableList.copyOf(iterable), false); } public static ImmutableList> inCompletionOrder(Iterable> iterable) { ListenableFuture[] gwtCompatibleToArray = gwtCompatibleToArray(iterable); final InCompletionOrderState inCompletionOrderState = new InCompletionOrderState(gwtCompatibleToArray); ImmutableList.Builder builderWithExpectedSize = ImmutableList.builderWithExpectedSize(gwtCompatibleToArray.length); for (int i = 0; i < gwtCompatibleToArray.length; i++) { builderWithExpectedSize.add((ImmutableList.Builder) new InCompletionOrderFuture(inCompletionOrderState)); } final ImmutableList> build = builderWithExpectedSize.build(); for (final int i2 = 0; i2 < gwtCompatibleToArray.length; i2++) { gwtCompatibleToArray[i2].addListener(new Runnable() { // from class: com.google.common.util.concurrent.Futures.3 @Override // java.lang.Runnable public void run() { InCompletionOrderState.this.recordInputCompletion(build, i2); } }, MoreExecutors.directExecutor()); } return build; } private static ListenableFuture[] gwtCompatibleToArray(Iterable> iterable) { Collection copyOf; if (iterable instanceof Collection) { copyOf = (Collection) iterable; } else { copyOf = ImmutableList.copyOf(iterable); } return (ListenableFuture[]) copyOf.toArray(new ListenableFuture[0]); } /* loaded from: classes3.dex */ private static final class InCompletionOrderFuture extends AbstractFuture { @CheckForNull private InCompletionOrderState state; /* JADX INFO: Access modifiers changed from: protected */ @Override // com.google.common.util.concurrent.AbstractFuture public void afterDone() { this.state = null; } private InCompletionOrderFuture(InCompletionOrderState inCompletionOrderState) { this.state = inCompletionOrderState; } @Override // com.google.common.util.concurrent.AbstractFuture, java.util.concurrent.Future public boolean cancel(boolean z) { InCompletionOrderState inCompletionOrderState = this.state; if (!super.cancel(z)) { return false; } ((InCompletionOrderState) Objects.requireNonNull(inCompletionOrderState)).recordOutputCancellation(z); return true; } /* JADX INFO: Access modifiers changed from: protected */ @Override // com.google.common.util.concurrent.AbstractFuture @CheckForNull public String pendingToString() { InCompletionOrderState inCompletionOrderState = this.state; if (inCompletionOrderState == null) { return null; } int length = ((InCompletionOrderState) inCompletionOrderState).inputFutures.length; return new StringBuilder(49).append("inputCount=[").append(length).append("], remaining=[").append(((InCompletionOrderState) inCompletionOrderState).incompleteOutputCount.get()).append("]").toString(); } } /* JADX INFO: Access modifiers changed from: private */ /* loaded from: classes3.dex */ public static final class InCompletionOrderState { private volatile int delegateIndex; private final AtomicInteger incompleteOutputCount; private final ListenableFuture[] inputFutures; private boolean shouldInterrupt; private boolean wasCancelled; private InCompletionOrderState(ListenableFuture[] listenableFutureArr) { this.wasCancelled = false; this.shouldInterrupt = true; this.delegateIndex = 0; this.inputFutures = listenableFutureArr; this.incompleteOutputCount = new AtomicInteger(listenableFutureArr.length); } /* JADX INFO: Access modifiers changed from: private */ public void recordOutputCancellation(boolean z) { this.wasCancelled = true; if (!z) { this.shouldInterrupt = false; } recordCompletion(); } /* JADX INFO: Access modifiers changed from: private */ public void recordInputCompletion(ImmutableList> immutableList, int i) { ListenableFuture listenableFuture = (ListenableFuture) Objects.requireNonNull(this.inputFutures[i]); this.inputFutures[i] = null; for (int i2 = this.delegateIndex; i2 < immutableList.size(); i2++) { if (immutableList.get(i2).setFuture(listenableFuture)) { recordCompletion(); this.delegateIndex = i2 + 1; return; } } this.delegateIndex = immutableList.size(); } private void recordCompletion() { if (this.incompleteOutputCount.decrementAndGet() == 0 && this.wasCancelled) { for (ListenableFuture listenableFuture : this.inputFutures) { if (listenableFuture != null) { listenableFuture.cancel(this.shouldInterrupt); } } } } } public static void addCallback(ListenableFuture listenableFuture, FutureCallback futureCallback, Executor executor) { Preconditions.checkNotNull(futureCallback); listenableFuture.addListener(new CallbackListener(listenableFuture, futureCallback), executor); } /* JADX INFO: Access modifiers changed from: private */ /* loaded from: classes3.dex */ public static final class CallbackListener implements Runnable { final FutureCallback callback; final Future future; CallbackListener(Future future, FutureCallback futureCallback) { this.future = future; this.callback = futureCallback; } @Override // java.lang.Runnable public void run() { Throwable tryInternalFastPathGetFailure; Future future = this.future; if ((future instanceof InternalFutureFailureAccess) && (tryInternalFastPathGetFailure = InternalFutures.tryInternalFastPathGetFailure((InternalFutureFailureAccess) future)) != null) { this.callback.onFailure(tryInternalFastPathGetFailure); return; } try { this.callback.onSuccess(Futures.getDone(this.future)); } catch (Error | RuntimeException e) { this.callback.onFailure(e); } catch (ExecutionException e2) { this.callback.onFailure(e2.getCause()); } } public String toString() { return MoreObjects.toStringHelper(this).addValue(this.callback).toString(); } } @ParametricNullness public static V getDone(Future future) throws ExecutionException { Preconditions.checkState(future.isDone(), "Future was expected to be done: %s", future); return (V) Uninterruptibles.getUninterruptibly(future); } @ParametricNullness public static V getChecked(Future future, Class cls) throws Exception { return (V) FuturesGetChecked.getChecked(future, cls); } @ParametricNullness public static V getChecked(Future future, Class cls, long j, TimeUnit timeUnit) throws Exception { return (V) FuturesGetChecked.getChecked(future, cls, j, timeUnit); } @ParametricNullness public static V getUnchecked(Future future) { Preconditions.checkNotNull(future); try { return (V) Uninterruptibles.getUninterruptibly(future); } catch (ExecutionException e) { wrapAndThrowUnchecked(e.getCause()); throw new AssertionError(); } } private static void wrapAndThrowUnchecked(Throwable th) { if (th instanceof Error) { throw new ExecutionError((Error) th); } throw new UncheckedExecutionException(th); } }