Include fan-out operators in the operator index (#27028)
This commit is contained in:
parent
e61703bb4a
commit
eca459e461
12 changed files with 58 additions and 19 deletions
|
|
@ -1,2 +1,4 @@
|
|||
These have one input and multiple outputs. They might route the elements between different outputs, or emit elements on
|
||||
multiple outputs at the same time.
|
||||
multiple outputs at the same time.
|
||||
|
||||
There is a number of fan-out operators for which currently no 'fluent' is API available. To use those you will have to use the @ref[Graph DSL](../stream-graphs.md#constructing-graphs).
|
||||
|
|
|
|||
|
|
@ -15,3 +15,10 @@ RedirectMatch 301 ^(.*)/project/migration-guide-stream-2\.0-2\.4.html.* $1/proje
|
|||
RedirectMatch 301 ^(.*)/stream/stages-overview\.html$ $1/stream/operators/index.html
|
||||
RedirectMatch 301 ^(.*)/agents\.html$ $1/project/migration-guide-2.5.x-2.6.x.html
|
||||
RedirectMatch 301 ^(.*)/typed-actors\.html$ $1/project/migration-guide-2.5.x-2.6.x.html#typedactor
|
||||
|
||||
|
||||
RedirectMatch 301 ^(.*)/stream/operators/Source-or-Flow/balance\.html$ $1/stream/operators/Balance.html
|
||||
RedirectMatch 301 ^(.*)/stream/operators/Source-or-Flow/broadcast\.html$ $1/stream/operators/Broadcast.html
|
||||
RedirectMatch 301 ^(.*)/stream/operators/Source-or-Flow/partition\.html$ $1/stream/operators/Partition.html
|
||||
RedirectMatch 301 ^(.*)/stream/operators/Source-or-Flow/unzip\.html$ $1/stream/operators/unzip.html
|
||||
RedirectMatch 301 ^(.*)/stream/operators/Source-or-Flow/UnzipWith\.html$ $1/stream/operators/UnzipWith.html
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# balance
|
||||
# Balance
|
||||
|
||||
Fan-out the stream to several streams.
|
||||
|
||||
@ref[Fan-out operators](../index.md#fan-out-operators)
|
||||
@ref[Fan-out operators](index.md#fan-out-operators)
|
||||
|
||||
## Description
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
# broadcast
|
||||
# Broadcast
|
||||
|
||||
Emit each incoming element each of `n` outputs.
|
||||
|
||||
@ref[Fan-out operators](../index.md#fan-out-operators)
|
||||
@ref[Fan-out operators](index.md#fan-out-operators)
|
||||
|
||||
## Description
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
# partition
|
||||
# Partition
|
||||
|
||||
Fan-out the stream to several streams.
|
||||
|
||||
@ref[Fan-out operators](../index.md#fan-out-operators)
|
||||
@ref[Fan-out operators](index.md#fan-out-operators)
|
||||
|
||||
## Signature
|
||||
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Attaches the given `Sink` to this `Flow`, meaning that elements that pass through this `Flow` will also be sent to the `Sink`.
|
||||
|
||||
@ref[Simple operators](../index.md#simple-operators)
|
||||
@ref[Fan-out operators](../index.md#fan-out-operators)
|
||||
|
||||
@@@ div { .group-scala }
|
||||
## Signature
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Each upstream element will either be diverted to the given sink, or the downstream consumer according to the predicate function applied to the element.
|
||||
|
||||
@ref[Simple operators](../index.md#simple-operators)
|
||||
@ref[Fan-out operators](../index.md#fan-out-operators)
|
||||
|
||||
@@@div { .group-scala }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Attaches the given `Sink` to this `Flow` as a wire tap, meaning that elements that pass through will also be sent to the wire-tap `Sink`, without the latter affecting the mainline flow.
|
||||
|
||||
@ref[Simple operators](../index.md#simple-operators)
|
||||
@ref[Fan-out operators](../index.md#fan-out-operators)
|
||||
|
||||
@@@div { .group-scala }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# unzip
|
||||
# Unzip
|
||||
|
||||
Takes a stream of two element tuples and unzips the two elements ino two different downstreams.
|
||||
|
||||
@ref[Fan-out operators](../index.md#fan-out-operators)
|
||||
@ref[Fan-out operators](index.md#fan-out-operators)
|
||||
|
||||
## Signature
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# unzipWith
|
||||
# UnzipWith
|
||||
|
||||
Splits each element of input into multiple downstreams using a function
|
||||
|
||||
|
|
@ -126,12 +126,10 @@ depending on being backpressured by downstream or not.
|
|||
|
||||
| |Operator|Description|
|
||||
|--|--|--|
|
||||
|Source/Flow|<a name="alsoto"></a>@ref[alsoTo](Source-or-Flow/alsoTo.md)|Attaches the given `Sink` to this `Flow`, meaning that elements that pass through this `Flow` will also be sent to the `Sink`.|
|
||||
|Flow|<a name="asflowwithcontext"></a>@ref[asFlowWithContext](Flow/asFlowWithContext.md)|Turns a Flow into a FlowWithContext which can propagate a context per element along a stream.|
|
||||
|Source/Flow|<a name="collect"></a>@ref[collect](Source-or-Flow/collect.md)|Apply a partial function to each incoming element, if the partial function is defined for a value the returned value is passed downstream.|
|
||||
|Source/Flow|<a name="collecttype"></a>@ref[collectType](Source-or-Flow/collectType.md)|Transform this stream by testing the type of each of the elements on which the element is an instance of the provided type as they pass through this processing step.|
|
||||
|Source/Flow|<a name="detach"></a>@ref[detach](Source-or-Flow/detach.md)|Detach upstream demand from downstream demand without detaching the stream rates.|
|
||||
|Source/Flow|<a name="divertto"></a>@ref[divertTo](Source-or-Flow/divertTo.md)|Each upstream element will either be diverted to the given sink, or the downstream consumer according to the predicate function applied to the element.|
|
||||
|Source/Flow|<a name="drop"></a>@ref[drop](Source-or-Flow/drop.md)|Drop `n` elements and then pass any subsequent element downstream.|
|
||||
|Source/Flow|<a name="dropwhile"></a>@ref[dropWhile](Source-or-Flow/dropWhile.md)|Drop elements as long as a predicate function return true for the element|
|
||||
|Source/Flow|<a name="filter"></a>@ref[filter](Source-or-Flow/filter.md)|Filter the incoming elements using a predicate.|
|
||||
|
|
@ -160,7 +158,6 @@ depending on being backpressured by downstream or not.
|
|||
|Source/Flow|<a name="takewhile"></a>@ref[takeWhile](Source-or-Flow/takeWhile.md)|Pass elements downstream as long as a predicate function return true for the element include the element when the predicate first return false and then complete.|
|
||||
|Source/Flow|<a name="throttle"></a>@ref[throttle](Source-or-Flow/throttle.md)|Limit the throughput to a specific number of elements per time unit, or a specific total cost per time unit, where a function has to be provided to calculate the individual cost of each element.|
|
||||
|Source/Flow|<a name="watch"></a>@ref[watch](Source-or-Flow/watch.md)|Watch a specific `ActorRef` and signal a failure downstream once the actor terminates.|
|
||||
|Source/Flow|<a name="wiretap"></a>@ref[wireTap](Source-or-Flow/wireTap.md)|Attaches the given `Sink` to this `Flow` as a wire tap, meaning that elements that pass through will also be sent to the wire-tap `Sink`, without the latter affecting the mainline flow.|
|
||||
|
||||
## Flow operators composed of Sinks and Sources
|
||||
|
||||
|
|
@ -257,6 +254,25 @@ the inputs in different ways.
|
|||
|Source/Flow|<a name="zipwith"></a>@ref[zipWith](Source-or-Flow/zipWith.md)|Combines elements from multiple sources through a `combine` function and passes the returned value downstream.|
|
||||
|Source/Flow|<a name="zipwithindex"></a>@ref[zipWithIndex](Source-or-Flow/zipWithIndex.md)|Zips elements of current flow with its indices.|
|
||||
|
||||
## Fan-out operators
|
||||
|
||||
These have one input and multiple outputs. They might route the elements between different outputs, or emit elements on
|
||||
multiple outputs at the same time.
|
||||
|
||||
There is a number of fan-out operators for which currently no 'fluent' is API available. To use those you will have to use the @ref[Graph DSL](../stream-graphs.md#constructing-graphs).
|
||||
|
||||
|
||||
| |Operator|Description|
|
||||
|--|--|--|
|
||||
| |<a name="balance"></a>@ref[Balance](Balance.md)|Fan-out the stream to several streams.|
|
||||
| |<a name="broadcast"></a>@ref[Broadcast](Broadcast.md)|Emit each incoming element each of `n` outputs.|
|
||||
| |<a name="partition"></a>@ref[Partition](Partition.md)|Fan-out the stream to several streams.|
|
||||
| |<a name="unzip"></a>@ref[Unzip](Unzip.md)|Takes a stream of two element tuples and unzips the two elements ino two different downstreams.|
|
||||
| |<a name="unzipwith"></a>@ref[UnzipWith](UnzipWith.md)|Splits each element of input into multiple downstreams using a function|
|
||||
|Source/Flow|<a name="alsoto"></a>@ref[alsoTo](Source-or-Flow/alsoTo.md)|Attaches the given `Sink` to this `Flow`, meaning that elements that pass through this `Flow` will also be sent to the `Sink`.|
|
||||
|Source/Flow|<a name="divertto"></a>@ref[divertTo](Source-or-Flow/divertTo.md)|Each upstream element will either be diverted to the given sink, or the downstream consumer according to the predicate function applied to the element.|
|
||||
|Source/Flow|<a name="wiretap"></a>@ref[wireTap](Source-or-Flow/wireTap.md)|Attaches the given `Sink` to this `Flow` as a wire tap, meaning that elements that pass through will also be sent to the wire-tap `Sink`, without the latter affecting the mainline flow.|
|
||||
|
||||
## Watching status operators
|
||||
|
||||
|
||||
|
|
@ -439,5 +455,10 @@ For more background see the @ref[Error Handling in Streams](../stream-error.md)
|
|||
* [actorRefWithAck](ActorSource/actorRefWithAck.md)
|
||||
* [ask](ActorFlow/ask.md)
|
||||
* [actorRef](ActorSink/actorRef.md)
|
||||
* [Partition](Partition.md)
|
||||
* [Broadcast](Broadcast.md)
|
||||
* [Balance](Balance.md)
|
||||
* [Unzip](Unzip.md)
|
||||
* [UnzipWith](UnzipWith.md)
|
||||
|
||||
@@@
|
||||
|
|
|
|||
|
|
@ -32,8 +32,7 @@ object StreamOperatorsIndexGenerator extends AutoPlugin {
|
|||
"Nesting and flattening operators",
|
||||
"Time aware operators",
|
||||
"Fan-in operators",
|
||||
// TODO these don't show up as def's yet so don't show up in the index..
|
||||
// "Fan-out operators",
|
||||
"Fan-out operators",
|
||||
"Watching status operators",
|
||||
"Actor interop operators",
|
||||
"Error handling"
|
||||
|
|
@ -125,6 +124,8 @@ object StreamOperatorsIndexGenerator extends AutoPlugin {
|
|||
def isPending(element: String, opName: String) =
|
||||
pendingTestCases.get(element).exists(_.contains(opName))
|
||||
|
||||
val noElement = " "
|
||||
|
||||
def generateAlphabeticalIndex(dir: SettingKey[File], locate: File => File) = Def.task[Seq[File]] {
|
||||
val file = locate(dir.value)
|
||||
|
||||
|
|
@ -170,7 +171,13 @@ object StreamOperatorsIndexGenerator extends AutoPlugin {
|
|||
.filter(op => !ignore.contains(op))
|
||||
.map(_.replaceAll("Mat$", ""))
|
||||
.map(method => (element, method))
|
||||
}
|
||||
} ++ List(
|
||||
(noElement, "Partition"),
|
||||
(noElement, "Broadcast"),
|
||||
(noElement, "Balance"),
|
||||
(noElement, "Unzip"),
|
||||
(noElement, "UnzipWith")
|
||||
)
|
||||
|
||||
val sourceAndFlow = defs.collect { case ("Source", method) => method } intersect defs.collect { case ("Flow", method) => method }
|
||||
|
||||
|
|
@ -178,6 +185,8 @@ object StreamOperatorsIndexGenerator extends AutoPlugin {
|
|||
defs.map {
|
||||
case (element @ ("Source" | "Flow"), method) if sourceAndFlow.contains(method) =>
|
||||
("Source/Flow", method, s"Source-or-Flow/$method.md")
|
||||
case (`noElement`, method) =>
|
||||
(noElement, method, s"$method.md")
|
||||
case (element, method) =>
|
||||
(element, method, s"$element/$method.md")
|
||||
}.distinct
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue