BidiFlow

org.apache.pekko.stream.scaladsl.BidiFlow
See theBidiFlow companion class
object BidiFlow

Attributes

Companion
class
Source
BidiFlow.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
BidiFlow.type

Members list

Value members

Concrete methods

def bidirectionalIdleTimeout[I, O](timeout: FiniteDuration): BidiFlow[I, I, O, O, NotUsed]

If the time between two processed elements in any direction exceed the provided timeout, the stream is failed with a org.apache.pekko.StreamIdleTimeoutException.

If the time between two processed elements in any direction exceed the provided timeout, the stream is failed with a org.apache.pekko.StreamIdleTimeoutException.

There is a difference between this operator and having two idleTimeout Flows assembled into a BidiStage. If the timeout is configured to be 1 seconds, then this operator 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 operator considers the joint frequencies of the elements in both directions.

Attributes

Source
BidiFlow.scala
def fromFlows[I1, O1, I2, O2, M1, M2](flow1: Graph[FlowShape[I1, O1], M1], flow2: Graph[FlowShape[I2, O2], M2]): BidiFlow[I1, O1, I2, O2, NotUsed]

Wraps two Flows to create a ''BidiFlow''. The materialized value of the resulting BidiFlow is Unit.

Wraps two Flows to create a ''BidiFlow''. The materialized value of the resulting BidiFlow is Unit.

   +----------------------------+
   | Resulting BidiFlow         |
   |                            |
   |  +----------------------+  |
I1 ~~> |        Flow1         | ~~> O1
   |  +----------------------+  |
   |                            |
   |  +----------------------+  |
O2 <~~ |        Flow2         | <~~ I2
   |  +----------------------+  |
   +----------------------------+

Attributes

Source
BidiFlow.scala
def fromFlowsMat[I1, O1, I2, O2, M1, M2, M](flow1: Graph[FlowShape[I1, O1], M1], flow2: Graph[FlowShape[I2, O2], M2])(combine: (M1, M2) => M): BidiFlow[I1, O1, I2, O2, M]

Wraps two Flows to create a ''BidiFlow''. The materialized value of the resulting BidiFlow is determined by the combiner function passed in the second argument list.

Wraps two Flows to create a ''BidiFlow''. The materialized value of the resulting BidiFlow is determined by the combiner function passed in the second argument list.

   +----------------------------+
   | Resulting BidiFlow         |
   |                            |
   |  +----------------------+  |
I1 ~~> |        Flow1         | ~~> O1
   |  +----------------------+  |
   |                            |
   |  +----------------------+  |
O2 <~~ |        Flow2         | <~~ I2
   |  +----------------------+  |
   +----------------------------+

Attributes

Source
BidiFlow.scala
def fromFunctions[I1, O1, I2, O2](outbound: I1 => O1, inbound: I2 => O2): BidiFlow[I1, O1, I2, O2, NotUsed]

Create a BidiFlow where the top and bottom flows are just one simple mapping operator each, expressed by the two functions.

Create a BidiFlow where the top and bottom flows are just one simple mapping operator each, expressed by the two functions.

Attributes

Source
BidiFlow.scala
def fromGraph[I1, O1, I2, O2, Mat](graph: Graph[BidiShape[I1, O1, I2, O2], Mat]): BidiFlow[I1, O1, I2, O2, Mat]

A graph with the shape of a flow logically is a flow, this method makes it so also in type.

A graph with the shape of a flow logically is a flow, this method makes it so also in type.

Attributes

Source
BidiFlow.scala
def identity[A, B]: BidiFlow[A, A, B, B, NotUsed]

Attributes

Source
BidiFlow.scala