Package org.bsc.async
Interface AsyncGenerator<E>
-
- Type Parameters:
E
- the type of elements. The generator will emitCompletableFutures<E>
elements
- All Superinterfaces:
AsyncGeneratorOperators<E>
,Iterable<E>
- All Known Implementing Classes:
AsyncGenerator.WithEmbed
,AsyncGenerator.WithResult
,AsyncGeneratorQueue.Generator
public interface AsyncGenerator<E> extends Iterable<E>, AsyncGeneratorOperators<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 Deprecated Methods Modifier and Type Method Description default AsyncGeneratorOperators<E>
async(Executor executor)
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<R>collectAsync(R result, Consumer<E> consumer)
Deprecated.Useasync
and then callAsyncGeneratorOperators.collectAsync(List, BiConsumer)
collectAsync} for the desired functionality.default <R extends List<E>>
CompletableFuture<R>collectAsync(R result, Consumer<E> consumer, Executor executor)
Deprecated.Useasync
and then callAsyncGeneratorOperators.collectAsync(List, BiConsumer)
collectAsync} for the desired functionality.static <E> AsyncGenerator<E>
empty()
Returns an empty AsyncGenerator.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 org.bsc.async.AsyncGeneratorOperators
collectAsync, executor, filter, flatMap, forEachAsync, map
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Method Detail
-
async
default AsyncGeneratorOperators<E> async(Executor executor)
-
next
AsyncGenerator.Data<E> next()
Retrieves the next asynchronous element.- Specified by:
next
in interfaceAsyncGeneratorOperators<E>
- Returns:
- the next element from the generator
-
toCompletableFuture
default CompletableFuture<Object> toCompletableFuture()
Converts the AsyncGenerator to a CompletableFuture.- Returns:
- a CompletableFuture representing the completion of the AsyncGenerator
-
collectAsync
@Deprecated default <R extends List<E>> CompletableFuture<R> collectAsync(R result, Consumer<E> consumer, Executor executor)
Deprecated.Useasync
and then callAsyncGeneratorOperators.collectAsync(List, BiConsumer)
collectAsync} for the desired functionality.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
@Deprecated default <R extends List<E>> CompletableFuture<R> collectAsync(R result, Consumer<E> consumer)
Deprecated.Useasync
and then callAsyncGeneratorOperators.collectAsync(List, BiConsumer)
collectAsync} for the desired functionality.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
-
iterator
default Iterator<E> iterator()
Returns an iterator over the elements of this AsyncGenerator. Each call to `next` retrieves the next "resolved" asynchronous 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
-
-