abstract class GraphStageLogic extends AnyRef
Represents the processing logic behind a GraphStage. Roughly speaking, a subclass of GraphStageLogic is a collection of the following parts: * A set of InHandler and OutHandler instances and their assignments to the Inlets and Outlets of the enclosing GraphStage * Possible mutable state, accessible from the InHandler and OutHandler callbacks, but not from anywhere else (as such access would not be thread-safe) * The lifecycle hooks preStart() and postStop() * Methods for performing stream processing actions, like pulling or pushing elements
The operator logic is completed once all its input and output ports have been closed. This can be changed by
setting setKeepGoing
to true.
The postStop
lifecycle hook on the logic itself is called once all ports are closed. This is the only tear down
callback that is guaranteed to happen, if the actor system or the materializer is terminated the handlers may never
see any callbacks to onUpstreamFailure
, onUpstreamFinish
or onDownstreamFinish
. Therefore operator resource
cleanup should always be done in postStop
.
- Source
- GraphStage.scala
- Alphabetic
- By Inheritance
- GraphStageLogic
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Type Members
-
class
SubSinkInlet[T] extends AnyRef
INTERNAL API
INTERNAL API
This allows the dynamic creation of an Inlet for a GraphStage which is connected to a Sink that is available for materialization (e.g. using the
subFusingMaterializer
). Care needs to be taken to cancel this Inlet when the operator shuts down lest the corresponding Sink be left hanging. -
class
SubSourceOutlet[T] extends AnyRef
INTERNAL API
INTERNAL API
This allows the dynamic creation of an Outlet for a GraphStage which is connected to a Source that is available for materialization (e.g. using the
subFusingMaterializer
). Care needs to be taken to complete this Outlet when the operator shuts down lest the corresponding Sink be left hanging. It is good practice to use thetimeout
method to cancel this Outlet in case the corresponding Source is not materialized within a given time limit, see e.g. ActorMaterializerSettings.
Value Members
-
final
def
completeStage(): Unit
Automatically invokes cancel() or complete() on all the input or output ports that have been called, then marks the operator as stopped.
-
final
def
failStage(ex: Throwable): Unit
Automatically invokes cancel() or fail() on all the input or output ports that have been called, then marks the operator as stopped.
-
final
def
getAsyncCallback[T](handler: (T) ⇒ Unit): AsyncCallback[T]
Obtain a callback object that can be used asynchronously to re-enter the current GraphStage with an asynchronous notification.
Obtain a callback object that can be used asynchronously to re-enter the current GraphStage with an asynchronous notification. The invoke() method of the returned AsyncCallback is safe to be called from other threads. It will in the background thread-safely delegate to the passed callback function. I.e. invoke() will be called by other thread and the passed handler will be invoked eventually in a thread-safe way by the execution environment.
In case stream is not yet materialized AsyncCallback will buffer events until stream is available.
AsyncCallback.invokeWithFeedback() has an internal promise that will be failed if event cannot be processed due to stream completion.
To be thread safe this method must only be called from either the constructor of the graph operator during materialization or one of the methods invoked by the graph operator machinery, such as
onPush
andonPull
.This object can be cached and reused within the same GraphStageLogic.
- val inCount: Int
-
final
def
isAvailable[T](out: Outlet[T]): Boolean
Return true if the given output port is ready to be pushed.
- val outCount: Int
-
def
postStop(): Unit
Invoked after processing of external events stopped because the operator is about to stop or fail.
Invoked after processing of external events stopped because the operator is about to stop or fail.
- Annotations
- @throws( classOf[Exception] )
-
def
preStart(): Unit
Invoked before any external events are processed, at the startup of the operator.
Invoked before any external events are processed, at the startup of the operator.
- Annotations
- @throws( classOf[Exception] )
- final def stageActor: StageActor