Class Select<T>

java.lang.Object
dev.restate.sdk.DurableFuture<T>
dev.restate.sdk.Select<T>
Type Parameters:
T - the output value

public final class Select<T> extends DurableFuture<T>
Select lets you await concurrently for multiple DurableFutures to complete, and for the first one to complete, either return its value directly or map it.

Example:


 // Using awakeables as example here
 var a1 = ctx.awakeable(String.class);
 var a2 = ctx.awakeable(MyObject.class);
 var a3 = ctx.awakeable(String.class);

 var result = Select.<String>select()
   // Just select the a1 as is
   .or(a1)
   // When selecting a2, map the success result
   .when(a2, myObject -> myObject.toString())
   // When selecting a3, map failure as another failure
   .when(a3, ThrowingFunction.identity(), ex -> {
     throw new TerminalException("a3 failed, too bad!");
   })
   // Finally await for the result
   .await();