Once an element is pushed from the wrapped flow (from fromWrapped), it first checks if the element is already
timed out. If a timeout message has already been sent for that element to downstream, then the element from
the wrapped flow is dropped.
A timer gets scheduled when there is a downstream demand that's not immediately addressed. This is to make sure
that a timeout response is sent to the downstream when upstream cannot address the demand on time.
Timer precision is at best 10ms to avoid unnecessary timer scheduling cycles
+------+
In ~> | | ~> In
| bidi |
Out <~ | | <~ FromWrapped
+------+
In
the type of the elements that gets forwarded to the wrapped flow
FromWrapped
the type of the elements that the wrapped flow sends back
Out
the type of the elements that are pushed to downstream
Linear Supertypes
TimerGraphStageLogic, GraphStageLogic, AnyRef, Any
Ordering
Alphabetic
By Inheritance
Inherited
TimeoutGraphStageLogic
TimerGraphStageLogic
GraphStageLogic
AnyRef
Any
Hide All
Show All
Visibility
Public
All
Instance Constructors
newTimeoutGraphStageLogic(shape: BidiShape[In, In, FromWrapped, Out])
shape
the BidiShape that the timeout logic is applied on
A bidi GraphStageLogic that is used by TimeoutBidiOrdered and TimeoutBidiUnordered to wrap flows to add timeout functionality.
Once an element is pushed from the wrapped flow (from fromWrapped), it first checks if the element is already timed out. If a timeout message has already been sent for that element to downstream, then the element from the wrapped flow is dropped.
A timer gets scheduled when there is a downstream demand that's not immediately addressed. This is to make sure that a timeout response is sent to the downstream when upstream cannot address the demand on time.
Timer precision is at best 10ms to avoid unnecessary timer scheduling cycles
the type of the elements that gets forwarded to the wrapped flow
the type of the elements that the wrapped flow sends back
the type of the elements that are pushed to downstream