Skip to main content

Interrupting

Interruption operations are crucial for workflows that need to respond to cancellation requests or timeout conditions. This allows selecting an alternative path based on such a signal.

val MySignal = SignalDef[MyRequest, MyResponse]()
val doA = WIO.pure(MyState(1)).autoNamed
val doB = WIO.pure(MyState(1)).autoNamed

val interruption =
WIO.interruption
.throughSignal(MySignal)
.handleSync((state, request) => MyEvent())
.handleEvent((state, event) => MyState(0))
.produceResponse((state, event) => MyResponse())
.autoNamed
.andThen(_ >>> doB)

val interruptedThroughSignal = doA.interruptWith(interruption)
Rendering Outputs