ExperimentalDSL

portals.api.dsl.ExperimentalDSL$

Experimental API. Various mix of experimental API extensions. Not stable.

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Value members

Concrete methods

def awaitAll[Rep](futures: Future[Rep]*)(f: AskerTaskContext[_, _, _, Rep] ?=> Unit)(using ctx: AskerTaskContext[_, _, _, Rep]): Unit
def awaitRec[T, U, Req, Rep](future: Future[Rep])(fRec: (AskerTaskContext[T, U, Req, Rep] ?=> Unit) => AskerTaskContext[T, U, Req, Rep] ?=> Unit)(using ctx: AskerTaskContext[T, U, Req, Rep]): Unit

Shorthand for creating a recursive await.

Shorthand for creating a recursive await.

Attributes

Extensions

Extensions

extension [T, U, CT, CU](fb: FlowBuilder[T, U, CT, CU])(fb: FlowBuilder[T, U, CT, CU])
def consume(): FlowBuilder[T, U, CU, CU]
def empty[NU](): FlowBuilder[T, U, CU, NU]
def nothing(): FlowBuilder[T, U, CU, Nothing]
def sample(n: Int): FlowBuilder[T, U, CU, CU]
extension [T, U, CT, CU](fb: FlowBuilder[T, U, CT, CU])(fb: FlowBuilder[T, U, CT, CU])
def recursiveAsker[CCU, Req, Rep](portals: AtomicPortalRefKind[Req, Rep]*)(fRec: (AskerTaskContext[CU, CCU, Req, Rep] ?=> CU => Unit) => AskerTaskContext[CU, CCU, Req, Rep] ?=> CU => Unit): FlowBuilder[T, U, CU, CCU]

Shorthand for creating a recursive asker task.

Shorthand for creating a recursive asker task.

Value parameters

fRec

The recursive function.

Attributes

Example
.recursiveAsker[Int] { self => x =>
 val future: Future[Pong] = ask(portal)(Ping(x))
 future.await {
   ctx.emit(future.value.get.x)
   if future.value.get.x > 0 then self(future.value.get.x)
 }
}
def recursiveAsker[CCU]: RecursiveAsker[T, U, CT, CU, CCU]
extension (gb: GeneratorBuilder)(gb: GeneratorBuilder)
extension [T](gen: AtomicGeneratorRef[T])(gen: AtomicGeneratorRef[T])
def throttle(eventsPerSecond: Int)(using ApplicationBuilder): AtomicGeneratorRef[T]

Throttle the generator to eventsPerSecond.

Throttle the generator to eventsPerSecond.

Attributes

extension [T](splitter: AtomicSplitterRefKind[T])(splitter: AtomicSplitterRefKind[T])
def split(f: T => Boolean)(using ab: ApplicationBuilder): AtomicStreamRef[T]