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.fromSinkAndSourceCoupledFlow.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.
1.0.0