49 lines
1.7 KiB
Text
49 lines
1.7 KiB
Text
/**
|
|
* Copyright (C) 2014-2018 Lightbend Inc. <https://www.lightbend.com>
|
|
*/
|
|
package akka.stream.javadsl
|
|
|
|
import akka.stream._
|
|
import akka.stream.scaladsl
|
|
import akka.japi.function
|
|
import akka.NotUsed
|
|
|
|
/**
|
|
* Combine the elements of multiple streams into a stream of combined elements using a combiner function,
|
|
* picking always the latest of the elements of each source.
|
|
*
|
|
* No element is emitted until at least one element from each Source becomes available. Whenever a new
|
|
* element appears, the zipping function is invoked with a tuple containing the new element
|
|
* and the other last seen elements.
|
|
*
|
|
* '''Emits when''' all of the inputs have at least an element available, and then each time an element becomes
|
|
* available on either of the inputs
|
|
*
|
|
* '''Backpressures when''' downstream backpressures
|
|
*
|
|
* '''Completes when''' any of the upstreams completes
|
|
*
|
|
* '''Cancels when''' downstream cancels
|
|
*/
|
|
object ZipLatestWith {
|
|
|
|
/**
|
|
* Create a new `ZipLatestWith` vertex with the specified input types and zipping-function `f`.
|
|
*
|
|
* @param f zipping-function from the input values to the output value
|
|
* @param attributes optional attributes for this vertex
|
|
*/
|
|
def create[A, B, Out](f: function.Function2[A, B, Out]): Graph[FanInShape2[A, B, Out], NotUsed] =
|
|
scaladsl.ZipLatestWith(f.apply _)
|
|
|
|
[3..22#/** Create a new `ZipLatestWith` specialized for 1 inputs.
|
|
*
|
|
* @param f zipping-function from the input values to the output value
|
|
* @param attributes optional attributes for this vertex
|
|
*/
|
|
def create1[[#T1#], Out](f: function.Function1[[#T1#], Out]): Graph[FanInShape1[[#T1#], Out], NotUsed] =
|
|
scaladsl.ZipLatestWith(f.apply _)#
|
|
|
|
]
|
|
|
|
}
|