Constructor and Description |
---|
BidiFlow(BidiFlow<I1,O1,I2,O2,Mat> delegate) |
Modifier and Type | Method and Description |
---|---|
BidiFlow<I1,O1,I2,O2,Mat> |
addAttributes(Attributes attr)
Add the given attributes to this Source.
|
BidiFlow<I1,O1,I2,O2,Mat> |
asScala() |
static Graph<S,M> |
async() |
<OO1,II2,Mat2> |
atop(BidiFlow<O1,OO1,II2,I2,Mat2> bidi)
Add the given BidiFlow as the next step in a bidirectional transformation
pipeline.
|
<OO1,II2,Mat2,M> |
atop(BidiFlow<O1,OO1,II2,I2,Mat2> bidi,
Function2<Mat,Mat2,M> combine)
Add the given BidiFlow as the next step in a bidirectional transformation 161
|
static <I,O> BidiFlow<I,I,O,O,NotUsed> |
bidirectionalIdleTimeout(scala.concurrent.duration.FiniteDuration timeout)
If the time between two processed elements *in any direction* exceed the provided timeout, the stream is failed
with a
TimeoutException . |
static <I1,O1,I2,O2,M1,M2> |
fromFlows(Graph<FlowShape<I1,O1>,M1> flow1,
Graph<FlowShape<I2,O2>,M2> flow2)
Wraps two Flows to create a ''BidiFlow''.
|
static <I1,O1,I2,O2,M1,M2,M> |
fromFlowsMat(Graph<FlowShape<I1,O1>,M1> flow1,
Graph<FlowShape<I2,O2>,M2> flow2,
Function2<M1,M2,M> combine)
Wraps two Flows to create a ''BidiFlow''.
|
static <I1,O1,I2,O2> |
fromFunctions(Function<I1,O1> top,
Function<I2,O2> bottom)
Create a BidiFlow where the top and bottom flows are just one simple mapping
stage each, expressed by the two functions.
|
static <I1,O1,I2,O2,M> |
fromGraph(Graph<BidiShape<I1,O1,I2,O2>,M> g)
A graph with the shape of a BidiFlow logically is a BidiFlow, this method makes
it so also in type.
|
static <A,B> BidiFlow<A,A,B,B,NotUsed> |
identity() |
<Mat2> Flow<I1,O2,Mat> |
join(Flow<O1,I2,Mat2> flow)
Add the given Flow as the final step in a bidirectional transformation
pipeline.
|
<Mat2,M> Flow<I1,O2,M> |
join(Flow<O1,I2,Mat2> flow,
Function2<Mat,Mat2,M> combine)
Add the given Flow as the final step in a bidirectional transformation
pipeline.
|
<Mat2> BidiFlow<I1,O1,I2,O2,Mat2> |
mapMaterializedValue(Function<Mat,Mat2> f)
Transform only the materialized value of this BidiFlow, leaving all other properties as they were.
|
StreamLayout.Module |
module()
INTERNAL API.
|
BidiFlow<I1,O1,I2,O2,Mat> |
named(java.lang.String name)
Add a
name attribute to this Flow. |
BidiFlow<I2,O2,I1,O1,Mat> |
reversed()
Turn this BidiFlow around by 180 degrees, logically flipping it upside down in a protocol stack.
|
BidiShape<I1,O1,I2,O2> |
shape()
The shape of a graph is all that is externally visible: its inlets and outlets.
|
BidiFlow<I1,O1,I2,O2,Mat> |
withAttributes(Attributes attr)
Change the attributes of this
Source to the given ones and seal the list
of attributes. |
public static <I1,O1,I2,O2,M> BidiFlow<I1,O1,I2,O2,M> fromGraph(Graph<BidiShape<I1,O1,I2,O2>,M> g)
g
- (undocumented)public static <I1,O1,I2,O2,M1,M2,M> BidiFlow<I1,O1,I2,O2,M> fromFlowsMat(Graph<FlowShape<I1,O1>,M1> flow1, Graph<FlowShape<I2,O2>,M2> flow2, Function2<M1,M2,M> combine)
+----------------------------+
| Resulting BidiFlow |
| |
| +----------------------+ |
I1 ~~> | Flow1 | ~~> O1
| +----------------------+ |
| |
| +----------------------+ |
O2 <~~ | Flow2 | <~~ I2
| +----------------------+ |
+----------------------------+
flow1
- (undocumented)flow2
- (undocumented)combine
- (undocumented)public static <I1,O1,I2,O2,M1,M2> BidiFlow<I1,O1,I2,O2,NotUsed> fromFlows(Graph<FlowShape<I1,O1>,M1> flow1, Graph<FlowShape<I2,O2>,M2> flow2)
+----------------------------+
| Resulting BidiFlow |
| |
| +----------------------+ |
I1 ~~> | Flow1 | ~~> O1
| +----------------------+ |
| |
| +----------------------+ |
O2 <~~ | Flow2 | <~~ I2
| +----------------------+ |
+----------------------------+
flow1
- (undocumented)flow2
- (undocumented)public static <I1,O1,I2,O2> BidiFlow<I1,O1,I2,O2,NotUsed> fromFunctions(Function<I1,O1> top, Function<I2,O2> bottom)
top
- (undocumented)bottom
- (undocumented)public static <I,O> BidiFlow<I,I,O,O,NotUsed> bidirectionalIdleTimeout(scala.concurrent.duration.FiniteDuration timeout)
TimeoutException
.
There is a difference between this stage and having two idleTimeout Flows assembled into a BidiStage. If the timeout is configured to be 1 seconds, then this stage will not fail even though there are elements flowing every second in one direction, but no elements are flowing in the other direction. I.e. this stage considers the *joint* frequencies of the elements in both directions.
timeout
- (undocumented)public static Graph<S,M> async()
public StreamLayout.Module module()
Graph
Every materializable element must be backed by a stream layout module
public BidiShape<I1,O1,I2,O2> shape()
Graph
public <OO1,II2,Mat2> BidiFlow<I1,OO1,II2,O2,Mat> atop(BidiFlow<O1,OO1,II2,I2,Mat2> bidi)
+----------------------------+
| Resulting BidiFlow |
| |
| +------+ +------+ |
I1 ~~> | | ~O1~> | | ~~> OO1
| | this | | bidi | |
O2 <~~ | | <~I2~ | | <~~ II2
| +------+ +------+ |
+----------------------------+
The materialized value of the combined BidiFlow
will be the materialized
value of the current flow (ignoring the other BidiFlow’s value), use
atopMat
if a different strategy is needed.bidi
- (undocumented)public <OO1,II2,Mat2,M> BidiFlow<I1,OO1,II2,O2,M> atop(BidiFlow<O1,OO1,II2,I2,Mat2> bidi, Function2<Mat,Mat2,M> combine)
pipeline. By convention protocol stacks are growing to the left: the right most is the bottom layer, the closest to the metal.
+----------------------------+
| Resulting BidiFlow |
| |
| +------+ +------+ |
I1 ~~> | | ~O1~> | | ~~> OO1
| | this | | bidi | |
O2 <~~ | | <~I2~ | | <~~ II2
| +------+ +------+ |
+----------------------------+
The combine
function is used to compose the materialized values of this flow and that
flow into the materialized value of the resulting BidiFlow.bidi
- (undocumented)combine
- (undocumented)public <Mat2> Flow<I1,O2,Mat> join(Flow<O1,I2,Mat2> flow)
+---------------------------+
| Resulting Flow |
| |
| +------+ +------+ |
I1 ~~> | | ~O1~> | | |
| | this | | flow | |
O2 <~~ | | <~I2~ | | |
| +------+ +------+ |
+---------------------------+
The materialized value of the combined Flow
will be the materialized
value of the current flow (ignoring the other Flow’s value), use
joinMat
if a different strategy is needed.flow
- (undocumented)public <Mat2,M> Flow<I1,O2,M> join(Flow<O1,I2,Mat2> flow, Function2<Mat,Mat2,M> combine)
+---------------------------+
| Resulting Flow |
| |
| +------+ +------+ |
I1 ~~> | | ~O1~> | | |
| | this | | flow | |
O2 <~~ | | <~I2~ | | |
| +------+ +------+ |
+---------------------------+
The combine
function is used to compose the materialized values of this flow and that
flow into the materialized value of the resulting Flow
.flow
- (undocumented)combine
- (undocumented)public BidiFlow<I2,O2,I1,O1,Mat> reversed()
public <Mat2> BidiFlow<I1,O1,I2,O2,Mat2> mapMaterializedValue(Function<Mat,Mat2> f)
f
- (undocumented)public BidiFlow<I1,O1,I2,O2,Mat> withAttributes(Attributes attr)
Source
to the given ones and seal the list
of attributes. This means that further calls will not be able to remove these
attributes, but instead add new ones. Note that this
operation has no effect on an empty Flow (because the attributes apply
only to the contained processing stages).public BidiFlow<I1,O1,I2,O2,Mat> addAttributes(Attributes attr)
withAttributes
will not remove these attributes. Note that this
operation has no effect on an empty Flow (because the attributes apply
only to the contained processing stages).