All Downloads are FREE. Search and download functionalities are using the official Maven repository.

akka.stream.javadsl.CoupledTerminationFlow.scala Maven / Gradle / Ivy

/*
 * Copyright (C) 2017-2020 Lightbend Inc. 
 */

package akka.stream.javadsl

/**
 * Allows coupling termination (cancellation, completion, erroring) of Sinks and Sources while creating a Flow from them.
 * Similar to `Flow.fromSinkAndSource` however that API does not connect the completion signals of the wrapped operators.
 */
object CoupledTerminationFlow {

  /**
   * Similar to [[Flow.fromSinkAndSource]] however couples the termination of these two operators.
   *
   * E.g. if the emitted [[Flow]] gets a cancellation, the [[Source]] of course is cancelled,
   * however the Sink will also be completed. The table below illustrates the effects in detail:
   *
   * 
   *   
   *     
   *     
   *     
   *   
   *   
   *     
   *     
   *     
   *   
   *   
   *     
   *     
   *     
   *   
   *   
   *     
   *     
   *     
   *   
   *   
   *     
   *     
   *     
   *   
   *   
   *     
   *     
   *     
   *   
   *   
   *     
   *     
   *     
   *   
   * 
Returned FlowSink (in)Source (out)
cause: upstream (sink-side) receives completioneffect: receives completioneffect: receives cancel
cause: upstream (sink-side) receives erroreffect: receives erroreffect: receives cancel
cause: downstream (source-side) receives canceleffect: completeseffect: receives cancel
effect: cancels upstream, completes downstreameffect: completescause: signals complete
effect: cancels upstream, errors downstreameffect: receives errorcause: signals error or throws
effect: cancels upstream, completes downstreamcause: cancelseffect: 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. */ @deprecated("Use `Flow.fromSinkAndSourceCoupledMat(..., ..., Keep.both())` instead", "2.5.2") def fromSinkAndSource[I, O, M1, M2](in: Sink[I, M1], out: Source[O, M2]): Flow[I, O, (M1, M2)] = akka.stream.scaladsl.Flow.fromSinkAndSourceCoupledMat(in, out)(akka.stream.scaladsl.Keep.both).asJava }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy