fix stream closed issue

This commit is contained in:
tommyskeff
2025-01-09 10:17:13 +00:00
parent df9e418091
commit 18dff51617
4 changed files with 30 additions and 10 deletions

View File

@@ -195,7 +195,8 @@ public interface PromiseFactory {
*/
default <K, V> @NotNull Promise<Map<K, V>> combineMapped(@NotNull Stream<Map.Entry<K, Promise<V>>> promises,
boolean link) {
return combineMapped(promises.iterator(), PromiseUtil.estimateSize(promises), link);
Spliterator<Map.Entry<K, Promise<V>>> spliterator = promises.spliterator();
return combineMapped(Spliterators.iterator(spliterator), PromiseUtil.estimateSize(spliterator), link);
}
/**
@@ -302,7 +303,8 @@ public interface PromiseFactory {
* @return the combined promise
*/
default <V> @NotNull Promise<List<V>> combine(@NotNull Stream<Promise<V>> promises, boolean link) {
return combine(promises.iterator(), PromiseUtil.estimateSize(promises), link);
Spliterator<Promise<V>> spliterator = promises.spliterator();
return combine(Spliterators.iterator(spliterator), PromiseUtil.estimateSize(spliterator), link);
}
/**
@@ -314,7 +316,7 @@ public interface PromiseFactory {
* @return the combined promise
*/
default <V> @NotNull Promise<List<V>> combine(@NotNull Stream<Promise<V>> promises) {
return combine(promises.iterator(), PromiseUtil.estimateSize(promises), true);
return combine(promises, true);
}
/**
@@ -369,7 +371,8 @@ public interface PromiseFactory {
*/
default @NotNull Promise<List<PromiseCompletion<?>>> allSettled(@NotNull Stream<Promise<?>> promises,
boolean link) {
return allSettled(promises.iterator(), PromiseUtil.estimateSize(promises), link);
Spliterator<Promise<?>> spliterator = promises.spliterator();
return allSettled(Spliterators.iterator(spliterator), PromiseUtil.estimateSize(spliterator), link);
}
/**
@@ -380,7 +383,7 @@ public interface PromiseFactory {
* @return the combined promise
*/
default @NotNull Promise<List<PromiseCompletion<?>>> allSettled(@NotNull Stream<Promise<?>> promises) {
return allSettled(promises.iterator(), PromiseUtil.estimateSize(promises), true);
return allSettled(promises, true);
}
/**

View File

@@ -4,7 +4,7 @@ import dev.tommyjs.futur.promise.CompletablePromise;
import dev.tommyjs.futur.promise.Promise;
import org.jetbrains.annotations.NotNull;
import java.util.stream.Stream;
import java.util.Spliterator;
public class PromiseUtil {
@@ -44,8 +44,8 @@ public class PromiseUtil {
* @param stream the stream
* @return the estimated size
*/
public static int estimateSize(@NotNull Stream<?> stream) {
long estimate = stream.spliterator().estimateSize();
public static int estimateSize(@NotNull Spliterator<?> stream) {
long estimate = stream.estimateSize();
return estimate == Long.MAX_VALUE ? 10 : (int) estimate;
}