Package org.bsc.async

Interface AsyncGenerator<E>

Type Parameters:
E - the type of elements. The generator will emit CompletableFutures<E> elements
All Superinterfaces:
AsyncGeneratorOperators<E>, Iterable<E>
All Known Implementing Classes:
AsyncGenerator.WithEmbed, AsyncGenerator.WithResult, AsyncGeneratorQueue.Generator, GeneratorSubscriber

public interface AsyncGenerator<E> extends Iterable<E>, AsyncGeneratorOperators<E>
An asynchronous generator interface that allows generating asynchronous elements.
  • Method Details

    • async

      default AsyncGeneratorOperators<E> async(Executor executor)
    • next

      Retrieves the next asynchronous element.
      Specified by:
      next in interface AsyncGeneratorOperators<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.
      Use async and then call AsyncGeneratorOperators.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 into
      consumer - the consumer function for processing elements
      executor - 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.
      Use async and then call AsyncGeneratorOperators.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 into
      consumer - 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.
      Specified by:
      iterator in interface Iterable<E>
      Returns:
      an iterator over the elements of this AsyncGenerator
    • 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 collection
      U - the type of elements in the CompletableFuture
      Parameters:
      iterator - the elements iterator
      mapFunction - the function to map elements to CompletableFuture
      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 iterator
      U - the type of elements in the CompletableFuture
      Parameters:
      iterator - the iterator containing elements to collect
      consumer - 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 collection
      U - the type of elements in the CompletableFuture
      Parameters:
      collection - the collection of elements to map
      mapFunction - 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 iterator
      U - the type of elements in the CompletableFuture
      Parameters:
      collection - the iterator containing elements to collect
      consumer - the function to consume elements and add them to the accumulator
      Returns:
      an AsyncGenerator instance with collected elements