Flow.fromSinkAndSourceCoupled
Allows coupling termination (cancellation, completion, erroring) of Sinks and Sources while creating a Flow between them.
Flow operators composed of Sinks and Sources
Signature
Flow.fromSinkAndSourceCoupled
Flow.fromSinkAndSourceCoupled
Description
See Flow.fromSinkAndSource for docs on the general workings and examples.
This operator only adds coupled termination to what fromSinkAndSource
does: If the emitted Flow
gets a cancellation, the Source
is cancelled, however the Sink will also be completed. The table below illustrates the effects in detail:
Returned Flow | Sink (in) | Source (out) |
---|---|---|
cause: upstream (sink-side) receives completion | effect: receives completion | effect: receives cancel |
cause: upstream (sink-side) receives error | effect: receives error | effect: receives cancel |
cause: downstream (source-side) receives cancel | effect: completes | effect: receives cancel |
effect: cancels upstream, completes downstream | effect: completes | cause: signals complete |
effect: cancels upstream, errors downstream | effect: receives error | cause: signals error or throws |
effect: cancels upstream, completes downstream | cause: cancels | effect: receives cancel |
The order in which the in and out sides receive their respective completion signals is not defined, do not rely on its ordering.