Package org.bsc.async
Interface AsyncGenerator<E>
-
- Type Parameters:
E
- the type of elements. The generator will emitCompletableFutures<E>
elements
- All Superinterfaces:
Iterable<E>
- All Known Implementing Classes:
AsyncGenerator.WithEmbed
,AsyncGenerator.WithResult
,AsyncGeneratorQueue.Generator
public interface AsyncGenerator<E> extends Iterable<E>
An asynchronous generator interface that allows generating asynchronous elements.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
AsyncGenerator.Data<E>
Represents a data element in the AsyncGenerator.static class
AsyncGenerator.Embed<E>
static interface
AsyncGenerator.EmbedCompletionHandler
static class
AsyncGenerator.WithEmbed<E>
An asynchronous generator decorator that allows to generators composition embedding other generators.static class
AsyncGenerator.WithResult<E>
An asynchronous generator decorator that allows retrieving the result value of the asynchronous operation, if any.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description static <E,U>
AsyncGenerator<U>collect(Collection<E> collection, BiConsumer<E,Consumer<CompletableFuture<U>>> consumer)
Collects asynchronous elements from a collection.static <E,U>
AsyncGenerator<U>collect(Iterator<E> iterator, BiConsumer<E,Consumer<CompletableFuture<U>>> consumer)
Collects asynchronous elements from an iterator.default <R extends List<E>>
CompletableFuture<Object>collectAsync(R result, Consumer<E> consumer)
Collects elements from the AsyncGenerator asynchronously into a list.default <R extends List<E>>
CompletableFuture<Object>collectAsync(R result, Consumer<E> consumer, Executor executor)
Collects elements from the AsyncGenerator asynchronously into a list.static <E> AsyncGenerator<E>
empty()
Returns an empty AsyncGenerator.default CompletableFuture<Object>
forEachAsync(Consumer<E> consumer)
Asynchronously iterates over the elements of the AsyncGenerator and applies the given consumer to each element.default CompletableFuture<Object>
forEachAsync(Consumer<E> consumer, Executor executor)
Asynchronously iterates over the elements of the AsyncGenerator and applies the given consumer to each element.default Iterator<E>
iterator()
Returns an iterator over the elements of this AsyncGenerator.static <E,U>
AsyncGenerator<U>map(Collection<E> collection, Function<E,CompletableFuture<U>> mapFunction)
create a generator, mapping each element to an asynchronous counterpart.static <E,U>
AsyncGenerator<U>map(Iterator<E> iterator, Function<E,CompletableFuture<U>> mapFunction)
create a generator, mapping each element to an asynchronous counterpart.AsyncGenerator.Data<E>
next()
Retrieves the next asynchronous element.default Stream<E>
stream()
Returns a sequential Stream with the elements of this AsyncGenerator.default CompletableFuture<Object>
toCompletableFuture()
Converts the AsyncGenerator to a CompletableFuture.-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Method Detail
-
next
AsyncGenerator.Data<E> next()
Retrieves the next asynchronous element.- Returns:
- the next element from the generator
-
empty
static <E> AsyncGenerator<E> empty()
Returns an empty AsyncGenerator.- Type Parameters:
E
- the type of elements- Returns:
- an empty AsyncGenerator
-
map
static <E,U> AsyncGenerator<U> map(Iterator<E> iterator, Function<E,CompletableFuture<U>> mapFunction)
create a generator, mapping each element to an asynchronous counterpart.- Type Parameters:
E
- the type of elements in the collectionU
- the type of elements in the CompletableFuture- Parameters:
iterator
- the elements iteratormapFunction
- the function to map elements toCompletableFuture
- Returns:
- an AsyncGenerator instance with mapped elements
-
collect
static <E,U> AsyncGenerator<U> collect(Iterator<E> iterator, BiConsumer<E,Consumer<CompletableFuture<U>>> consumer)
Collects asynchronous elements from an iterator.- Type Parameters:
E
- the type of elements in the iteratorU
- the type of elements in the CompletableFuture- Parameters:
iterator
- the iterator containing elements to collectconsumer
- the function to consume elements and add them to the accumulator- Returns:
- an AsyncGenerator instance with collected elements
-
map
static <E,U> AsyncGenerator<U> map(Collection<E> collection, Function<E,CompletableFuture<U>> mapFunction)
create a generator, mapping each element to an asynchronous counterpart.- Type Parameters:
E
- the type of elements in the collectionU
- the type of elements in the CompletableFuture- Parameters:
collection
- the collection of elements to mapmapFunction
- the function to map elements to CompletableFuture- Returns:
- an AsyncGenerator instance with mapped elements
-
collect
static <E,U> AsyncGenerator<U> collect(Collection<E> collection, BiConsumer<E,Consumer<CompletableFuture<U>>> consumer)
Collects asynchronous elements from a collection.- Type Parameters:
E
- the type of elements in the iteratorU
- the type of elements in the CompletableFuture- Parameters:
collection
- the iterator containing elements to collectconsumer
- the function to consume elements and add them to the accumulator- Returns:
- an AsyncGenerator instance with collected elements
-
toCompletableFuture
default CompletableFuture<Object> toCompletableFuture()
Converts the AsyncGenerator to a CompletableFuture.- Returns:
- a CompletableFuture representing the completion of the AsyncGenerator
-
forEachAsync
default CompletableFuture<Object> forEachAsync(Consumer<E> consumer, Executor executor)
Asynchronously iterates over the elements of the AsyncGenerator and applies the given consumer to each element.- Parameters:
consumer
- the consumer function to be applied to each elementexecutor
- the executor to use for the asynchronous iteration- Returns:
- a CompletableFuture representing the completion of the iteration process. Return the result value
-
forEachAsync
default CompletableFuture<Object> forEachAsync(Consumer<E> consumer)
Asynchronously iterates over the elements of the AsyncGenerator and applies the given consumer to each element.- Parameters:
consumer
- the consumer function to be applied to each element- Returns:
- a CompletableFuture representing the completion of the iteration process.
-
collectAsync
default <R extends List<E>> CompletableFuture<Object> collectAsync(R result, Consumer<E> consumer, Executor executor)
Collects elements from the AsyncGenerator asynchronously into a list.- Type Parameters:
R
- the type of the result list- Parameters:
result
- the result list to collect elements intoconsumer
- the consumer function for processing elementsexecutor
- the executor to use for the asynchronous collection- Returns:
- a CompletableFuture representing the completion of the collection process
-
collectAsync
default <R extends List<E>> CompletableFuture<Object> collectAsync(R result, Consumer<E> consumer)
Collects elements from the AsyncGenerator asynchronously into a list.- Type Parameters:
R
- the type of the result list- Parameters:
result
- the result list to collect elements intoconsumer
- the consumer function for processing elements- Returns:
- a CompletableFuture representing the completion of the collection process
-
stream
default Stream<E> stream()
Returns a sequential Stream with the elements of this AsyncGenerator. Each CompletableFuture is resolved and then make available to the stream.- Returns:
- a Stream of elements from the AsyncGenerator
-
-