Class Flow$
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<I,
O, M> Flow<I, O, CompletionStage<M>> completionStageFlow
(CompletionStage<Flow<I, O, M>> flow) Turn aCompletionStage
into a flow that will consume the values of the source when the future completes successfully.create()
Create a `Flow` which can process elements of type `T`.Collect the value ofOptional
from the elements passing through this flow, emptyOptional
is filtered out.fromFunction
(Function<I, O> f) Creates a [Flow] which will use the given function to transform its inputs to outputs.<I,
O, M> Flow<I, O, M> A graph with the shape of a flow logically is a flow, this method makes it so also in type.<I,
O, M> Flow<I, O, CompletionStage<M>> fromMaterializer
(Function2<Materializer, Attributes, Flow<I, O, M>> factory) Defers the creation of aFlow
until materialization.fromProcessor
(Creator<org.reactivestreams.Processor<I, O>> processorFactory) <I,
O, Mat> Flow<I, O, Mat> fromProcessorMat
(Creator<Pair<org.reactivestreams.Processor<I, O>, Mat>> processorFactory) fromSinkAndSource
(Graph<SinkShape<I>, ?> sink, Graph<SourceShape<O>, ?> source) Creates aFlow
from aSink
and aSource
where the Flow's input will be sent to the Sink and the Flow's output will come from the Source.fromSinkAndSourceCoupled
(Graph<SinkShape<I>, ?> sink, Graph<SourceShape<O>, ?> source) Allows coupling termination (cancellation, completion, erroring) of Sinks and Sources while creating a Flow from them.<I,
O, M1, M2, M>
Flow<I,O, M> fromSinkAndSourceCoupledMat
(Graph<SinkShape<I>, M1> sink, Graph<SourceShape<O>, M2> source, Function2<M1, M2, M> combine) Allows coupling termination (cancellation, completion, erroring) of Sinks and Sources while creating a Flow from them.<I,
O, M1, M2, M>
Flow<I,O, M> fromSinkAndSourceMat
(Graph<SinkShape<I>, M1> sink, Graph<SourceShape<O>, M2> source, Function2<M1, M2, M> combine) Creates aFlow
from aSink
and aSource
where the Flow's input will be sent to the Sink and the Flow's output will come from the Source.<I,
O, M> Flow<I, O, CompletionStage<M>> lazyCompletionStageFlow
(Creator<CompletionStage<Flow<I, O, M>>> create) Defers invoking thecreate
function to create a future flow until there downstream demand has caused upstream to send a first element.<I,
O, M> Flow<I, O, CompletionStage<M>> Defers invoking thecreate
function to create a future flow until there is downstream demand and passing that downstream demand upstream triggers the first element.Create a `Flow` which can process elements of type `T`.optionalVia
(Flow<FIn, Optional<FOut>, FMat> flow, Flow<FOut, FViaOut, FViaMat> viaFlow, Function2<FMat, FViaMat, Mat> combine) Creates a Flow from an existing base Flow outputting an optional element and applying an additional viaFlow only if the element in the stream is defined.<In,
SuperOut, Out extends SuperOut, M>
Flow<In,SuperOut, M> Upcast a stream of elements to a stream of supertypes of that element.
-
Field Details
-
MODULE$
Static reference to the singleton instance of this Scala object.
-
-
Constructor Details
-
Flow$
public Flow$()
-
-
Method Details
-
create
Create a `Flow` which can process elements of type `T`. -
fromProcessor
-
fromProcessorMat
-
fromFunction
Creates a [Flow] which will use the given function to transform its inputs to outputs. It is equivalent toFlow.create[T].map(f)
-
optionalVia
public <FIn,FOut, Flow<FIn,FViaOut, FMat, FViaMat, Mat> Optional<FViaOut>, optionalViaMat> (Flow<FIn, Optional<FOut>, FMat> flow, Flow<FOut, FViaOut, FViaMat> viaFlow, Function2<FMat, FViaMat, Mat> combine) Creates a Flow from an existing base Flow outputting an optional element and applying an additional viaFlow only if the element in the stream is defined.'''Emits when''' the provided viaFlow runs with defined elements
'''Backpressures when''' the viaFlow runs for the defined elements and downstream backpressures
'''Completes when''' upstream completes
'''Cancels when''' downstream cancels
- Parameters:
flow
- The base flow that outputs an optional elementviaFlow
- The flow that gets used if the optional element in is defined.combine
- How to combine the materialized values of flow and viaFlow- Returns:
- a Flow with the viaFlow applied onto defined elements of the flow. The output value is contained within an Optional which indicates whether the original flow's element had viaFlow applied.
- Since:
- 1.1.0
-
of
Create a `Flow` which can process elements of type `T`. -
fromGraph
A graph with the shape of a flow logically is a flow, this method makes it so also in type. -
fromMaterializer
public <I,O, Flow<I,M> O, fromMaterializerCompletionStage<M>> (Function2<Materializer, Attributes, Flow<I, O, M>> factory) -
fromSinkAndSource
public <I,O> Flow<I,O, fromSinkAndSourceNotUsed> (Graph<SinkShape<I>, ?> sink, Graph<SourceShape<O>, ?> source) Creates aFlow
from aSink
and aSource
where the Flow's input will be sent to the Sink and the Flow's output will come from the Source.The resulting flow can be visualized as:
+----------------------------------------------+ | Resulting Flow[I, O, NotUsed] | | | | +---------+ +-----------+ | | | | | | | I ~~> | Sink[I] | [no-connection!] | Source[O] | ~~> O | | | | | | | +---------+ +-----------+ | +----------------------------------------------+
The completion of the Sink and Source sides of a Flow constructed using this method are independent. So if the Sink receives a completion signal, the Source side will remain unaware of that. If you are looking to couple the termination signals of the two sides use
Flow.fromSinkAndSourceCoupled
instead.See also
<I,O,M1,M2,M>fromSinkAndSourceMat(org.apache.pekko.stream.Graph<org.apache.pekko.stream.SinkShape<I>,M1>,org.apache.pekko.stream.Graph<org.apache.pekko.stream.SourceShape<O>,M2>,org.apache.pekko.japi.function.Function2<M1,M2,M>)
when access to materialized values of the parameters is needed. -
fromSinkAndSourceMat
public <I,O, Flow<I,M1, M2, M> O, fromSinkAndSourceMatM> (Graph<SinkShape<I>, M1> sink, Graph<SourceShape<O>, M2> source, Function2<M1, M2, M> combine) Creates aFlow
from aSink
and aSource
where the Flow's input will be sent to the Sink and the Flow's output will come from the Source.The resulting flow can be visualized as:
+-------------------------------------------------------+ | Resulting Flow[I, O, M] | | | | +-------------+ +---------------+ | | | | | | | I ~~> | Sink[I, M1] | [no-connection!] | Source[O, M2] | ~~> O | | | | | | | +-------------+ +---------------+ | +------------------------------------------------------+
The completion of the Sink and Source sides of a Flow constructed using this method are independent. So if the Sink receives a completion signal, the Source side will remain unaware of that. If you are looking to couple the termination signals of the two sides use
Flow.fromSinkAndSourceCoupledMat
instead.The
combine
function is used to compose the materialized values of thesink
andsource
into the materialized value of the resultingFlow
. -
fromSinkAndSourceCoupled
public <I,O> Flow<I,O, fromSinkAndSourceCoupledNotUsed> (Graph<SinkShape<I>, ?> sink, Graph<SourceShape<O>, ?> source) Allows coupling termination (cancellation, completion, erroring) of Sinks and Sources while creating a Flow from them. Similar toFlow.fromSinkAndSource
however couples the termination of these two operators.The resulting flow can be visualized as:
+---------------------------------------------+ | Resulting Flow[I, O, NotUsed] | | | | +---------+ +-----------+ | | | | | | | I ~~> | Sink[I] | ~~~(coupled)~~~ | Source[O] | ~~> O | | | | | | | +---------+ +-----------+ | +---------------------------------------------+
E.g. if the emitted
Flow
gets a cancellation, theSource
of course 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 See also
<I,O,M1,M2,M>fromSinkAndSourceCoupledMat(org.apache.pekko.stream.Graph<org.apache.pekko.stream.SinkShape<I>,M1>,org.apache.pekko.stream.Graph<org.apache.pekko.stream.SourceShape<O>,M2>,org.apache.pekko.japi.function.Function2<M1,M2,M>)
when access to materialized values of the parameters is needed. -
fromSinkAndSourceCoupledMat
public <I,O, Flow<I,M1, M2, M> O, fromSinkAndSourceCoupledMatM> (Graph<SinkShape<I>, M1> sink, Graph<SourceShape<O>, M2> source, Function2<M1, M2, M> combine) Allows coupling termination (cancellation, completion, erroring) of Sinks and Sources while creating a Flow from them. Similar toFlow.fromSinkAndSource
however couples the termination of these two operators.The resulting flow can be visualized as:
+-----------------------------------------------------+ | Resulting Flow[I, O, M] | | | | +-------------+ +---------------+ | | | | | | | I ~~> | Sink[I, M1] | ~~~(coupled)~~~ | Source[O, M2] | ~~> O | | | | | | | +-------------+ +---------------+ | +-----------------------------------------------------+
E.g. if the emitted
Flow
gets a cancellation, theSource
of course is cancelled, however the Sink will also be completed. The table onFlow.fromSinkAndSourceCoupled
illustrates the effects in detail.The
combine
function is used to compose the materialized values of thesink
andsource
into the materialized value of the resultingFlow
. -
completionStageFlow
public <I,O, Flow<I,M> O, completionStageFlowCompletionStage<M>> (CompletionStage<Flow<I, O, M>> flow) Turn aCompletionStage
into a flow that will consume the values of the source when the future completes successfully. If theFuture
is completed with a failure the stream is failed.The materialized completion stage value is completed with the materialized value of the future flow or failed with a
NeverMaterializedException
if upstream fails or downstream cancels before the completion stage has completed. -
lazyFlow
Defers invoking thecreate
function to create a future flow until there is downstream demand and passing that downstream demand upstream triggers the first element.Note that asynchronous boundaries (and other operators) in the stream may do pre-fetching which counter acts the laziness and can trigger the factory earlier than expected.
'''Emits when''' the internal flow is successfully created and it emits
'''Backpressures when''' the internal flow is successfully created and it backpressures or downstream backpressures
'''Completes when''' upstream completes and all elements have been emitted from the internal flow
'''Cancels when''' downstream cancels
-
lazyCompletionStageFlow
public <I,O, Flow<I,M> O, lazyCompletionStageFlowCompletionStage<M>> (Creator<CompletionStage<Flow<I, O, M>>> create) Defers invoking thecreate
function to create a future flow until there downstream demand has caused upstream to send a first element.The materialized future value is completed with the materialized value of the created flow when that has successfully been materialized.
If the
create
function throws or returns a future that fails the stream is failed, in this case the materialized future value is failed with aNeverMaterializedException
.Note that asynchronous boundaries (and other operators) in the stream may do pre-fetching which counter acts the laziness and can trigger the factory earlier than expected.
'''Emits when''' the internal flow is successfully created and it emits
'''Backpressures when''' the internal flow is successfully created and it backpressures or downstream backpressures
'''Completes when''' upstream completes and all elements have been emitted from the internal flow
'''Cancels when''' downstream cancels
-
upcast
Upcast a stream of elements to a stream of supertypes of that element. Useful in combination with fan-in operators where you do not want to pay the cost of casting each element in amap
.- Returns:
- A flow that accepts
In
and outputs elements of the super type
-
flattenOptional
Collect the value ofOptional
from the elements passing through this flow, emptyOptional
is filtered out.Adheres to the
ActorAttributes.SupervisionStrategy
attribute.'''Emits when''' the current
Optional
's value is present.'''Backpressures when''' the value of the current
Optional
is present and downstream backpressures'''Completes when''' upstream completes
'''Cancels when''' downstream cancels *
-