OrElse stage for fallback when no elements emitted #21024
This commit is contained in:
parent
fbfc8b4c58
commit
012919fdb3
12 changed files with 465 additions and 7 deletions
|
|
@ -980,6 +980,31 @@ class SubSource[+Out, +Mat](delegate: scaladsl.SubFlow[Out, Mat, scaladsl.Source
|
|||
def prepend[T >: Out, M](that: Graph[SourceShape[T], M]): SubSource[T, Mat] =
|
||||
new SubSource(delegate.prepend(that))
|
||||
|
||||
/**
|
||||
* Provides a secondary source that will be consumed if this source completes without any
|
||||
* elements passing by. As soon as the first element comes through this stream, the alternative
|
||||
* will be cancelled.
|
||||
*
|
||||
* Note that this Flow will be materialized together with the [[Source]] and just kept
|
||||
* from producing elements by asserting back-pressure until its time comes or it gets
|
||||
* cancelled.
|
||||
*
|
||||
* On errors the stage is failed regardless of source of the error.
|
||||
*
|
||||
* '''Emits when''' element is available from first stream or first stream closed without emitting any elements and an element
|
||||
* is available from the second stream
|
||||
*
|
||||
* '''Backpressures when''' downstream backpressures
|
||||
*
|
||||
* '''Completes when''' the primary stream completes after emitting at least one element, when the primary stream completes
|
||||
* without emitting and the secondary stream already has completed or when the secondary stream completes
|
||||
*
|
||||
* '''Cancels when''' downstream cancels and additionally the alternative is cancelled as soon as an element passes
|
||||
* by from this stream.
|
||||
*/
|
||||
def orElse[T >: Out, M](secondary: Graph[SourceShape[T], M]): javadsl.SubSource[T, Mat] =
|
||||
new SubSource(delegate.orElse(secondary))
|
||||
|
||||
/**
|
||||
* Attaches the given [[Sink]] to this [[Flow]], meaning that elements that passes
|
||||
* through will also be sent to the [[Sink]].
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue