add toFuture method

This commit is contained in:
WhatCats
2024-04-08 10:05:05 +02:00
parent 54d7b02675
commit e8512df504
3 changed files with 31 additions and 4 deletions

View File

@@ -10,10 +10,7 @@ import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import java.util.Collection;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
@@ -438,4 +435,16 @@ public abstract class AbstractPromise<T, F> implements Promise<T> {
return completion.get();
}
@Override
public @NotNull CompletableFuture<T> toFuture() {
CompletableFuture<T> future = new CompletableFuture<>();
this.addDirectListener(future::complete, future::completeExceptionally);
future.whenComplete((res, e) -> {
if (e instanceof CancellationException) {
this.cancel();
}
});
return future;
}
}