Class GraphStageLogic
- java.lang.Object
-
- org.apache.pekko.stream.stage.GraphStageLogic
-
- Direct Known Subclasses:
GraphStageLogicWithLogging,KillSwitches.KillableGraphStageLogic,TimerGraphStageLogic
public abstract class GraphStageLogic extends java.lang.ObjectRepresents the processing logic behind aGraphStage. Roughly speaking, a subclass ofGraphStageLogicis a collection of the following parts: * A set ofInHandlerandOutHandlerinstances and their assignments to theInlets andOutlets of the enclosingGraphStage* Possible mutable state, accessible from theInHandlerandOutHandlercallbacks, but not from anywhere else (as such access would not be thread-safe) * The lifecycle hookspreStart()andpostStop()* Methods for performing stream processing actions, like pulling or pushing elementsThe operator logic is completed once all its input and output ports have been closed. This can be changed by setting
setKeepGoingto true.The
postStoplifecycle 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 toonUpstreamFailure,onUpstreamFinishoronDownstreamFinish. Therefore operator resource cleanup should always be done inpostStop.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGraphStageLogic.ConditionalTerminateInputInput handler that terminates the state upon receiving completion if the given condition holds at that time.static classGraphStageLogic.ConditionalTerminateOutputOutput handler that terminates the state upon receiving completion if the given condition holds at that time.static classGraphStageLogic.EagerTerminateInput$Input handler that terminates the operator upon receiving completion.static classGraphStageLogic.EagerTerminateOutput$Output handler that terminates the operator upon cancellation.static classGraphStageLogic.IgnoreTerminateInput$Input handler that does not terminate the operator upon receiving completion.static classGraphStageLogic.IgnoreTerminateOutput$Output handler that does not terminate the operator upon cancellation.static classGraphStageLogic.StageActorMinimal actor to work with other actors and watch them in a synchronous waysstatic classGraphStageLogic.StageActorRef$static classGraphStageLogic.StageActorRefNotInitializedExceptionstatic classGraphStageLogic.StageActorRefNotInitializedException$classGraphStageLogic.SubSinkInlet<T>INTERNAL APIclassGraphStageLogic.SubSourceOutlet<T>INTERNAL APIstatic classGraphStageLogic.TotallyIgnorantInput$Input handler that does not terminate the operator upon receiving completion nor failure.
-
Constructor Summary
Constructors Constructor Description GraphStageLogic(Shape shape)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidabortEmitting(Outlet<?> out)Abort outstanding (suspended) emissions for the given outlet, if there are any.protected voidabortReading(Inlet<?> in)Abort outstanding (suspended) reading for the given inlet, if there is any.protected voidafterPostStop()INTERNAL APIprotected voidbeforePreStart()INTERNAL APIprotected <T> voidcancel(Inlet<T> in)Requests to stop receiving events from a given input port.protected <T> voidcancel(Inlet<T> in, java.lang.Throwable cause)Requests to stop receiving events from a given input port.voidcancelStage(java.lang.Throwable cause)Automatically invokes<T>cancel(org.apache.pekko.stream.Inlet<T>)or<T>complete(org.apache.pekko.stream.Outlet<T>)on all the input or output ports that have been called, then marks the stage as stopped.protected <T> voidcomplete(Outlet<T> out)Signals that there will be no more elements emitted on the given port.voidcompleteStage()Automatically invokes<T>cancel(org.apache.pekko.stream.Inlet<T>)or<T>complete(org.apache.pekko.stream.Outlet<T>)on all the input or output ports that have been called, then marks the operator as stopped.protected InHandlerconditionalTerminateInput(scala.Function0<java.lang.Object> predicate)Input handler that terminates the state upon receiving completion if the given condition holds at that time.protected OutHandlerconditionalTerminateOutput(scala.Function0<java.lang.Object> predicate)Output handler that terminates the state upon receiving completion if the given condition holds at that time.protected <T> AsyncCallback<T>createAsyncCallback(Procedure<T> handler)Java API: Obtain a callback object that can be used asynchronously to re-enter the currentGraphStagewith an asynchronous notification.protected InHandlereagerTerminateInput()Input handler that terminates the operator upon receiving completion.protected OutHandlereagerTerminateOutput()Output handler that terminates the operator upon cancellation.protected <T> voidemit(Outlet<T> out, T elem)Emit an element through the given outlet, suspending execution if necessary.protected <T> voidemit(Outlet<T> out, T elem, Effect andThen)protected <T> voidemit(Outlet<T> out, T elem, scala.Function0<scala.runtime.BoxedUnit> andThen)Emit an element through the given outlet and continue with the given thunk afterwards, suspending execution if necessary.protected <T> voidemitMultiple(Outlet<T> out, java.util.Iterator<T> elems)Java APIprotected <T> voidemitMultiple(Outlet<T> out, java.util.Iterator<T> elems, Effect andThen)Java APIprotected <T> voidemitMultiple(Outlet<T> out, scala.collection.immutable.Iterable<T> elems)Emit a sequence of elements through the given outlet, suspending execution if necessary.protected <T> voidemitMultiple(Outlet<T> out, scala.collection.immutable.Iterable<T> elems, scala.Function0<scala.runtime.BoxedUnit> andThen)Emit a sequence of elements through the given outlet and continue with the given thunk afterwards, suspending execution if necessary.protected <T> voidemitMultiple(Outlet<T> out, scala.collection.Iterator<T> elems)Emit a sequence of elements through the given outlet, suspending execution if necessary.protected <T> voidemitMultiple(Outlet<T> out, scala.collection.Iterator<T> elems, scala.Function0<scala.runtime.BoxedUnit> andThen)Emit a sequence of elements through the given outlet and continue with the given thunk afterwards, suspending execution if necessary.protected <T> voidfail(Outlet<T> out, java.lang.Throwable ex)Signals failure through the given port.voidfailStage(java.lang.Throwable ex)Automatically invokes<T>cancel(org.apache.pekko.stream.Inlet<T>)or<T>fail(org.apache.pekko.stream.Outlet<T>,java.lang.Throwable)on all the input or output ports that have been called, then marks the operator as stopped.<T> AsyncCallback<T>getAsyncCallback(scala.Function1<T,scala.runtime.BoxedUnit> handler)Obtain a callback object that can be used asynchronously to re-enter the currentGraphStagewith an asynchronous notification.protected GraphStageLogic.StageActorgetEagerStageActor(Materializer eagerMaterializer, scala.Function1<scala.Tuple2<ActorRef,java.lang.Object>,scala.runtime.BoxedUnit> receive)INTERNAL APIprotected InHandlergetHandler(Inlet<?> in)Retrieves the current callback for the events on the givenInletprotected OutHandlergetHandler(Outlet<?> out)Retrieves the current callback for the events on the givenOutletprotected GraphStageLogic.StageActorgetStageActor(scala.Function1<scala.Tuple2<ActorRef,java.lang.Object>,scala.runtime.BoxedUnit> receive)Initialize aStageActorRefwhich can be used to interact with from the outside world "as-if" anActor.protected <T> Tgrab(Inlet<T> in)Once the callbackInHandler.onPushfor an input port has been invoked, the element that has been pushed can be retrieved via this method.protected <T> booleanhasBeenPulled(Inlet<T> in)Indicates whether there is already a pending pull for the given input port.protected InHandlerignoreTerminateInput()Input handler that does not terminate the operator upon receiving completion.protected OutHandlerignoreTerminateOutput()Output handler that does not terminate the operator upon cancellation.intinCount()protected <T> booleanisAvailable(Inlet<T> in)Indicates whether there is an element waiting at the given input port.<T> booleanisAvailable(Outlet<T> out)Return true if the given output port is ready to be pushed.protected <T> booleanisClosed(Inlet<T> in)Indicates whether the port has been closed.protected <T> booleanisClosed(Outlet<T> out)Indicates whether the port has been closed.protected Materializermaterializer()Thepekko.stream.Materializerthat has set this GraphStage in motion.intoutCount()protected <Out,In extends Out>
voidpassAlong(Inlet<In> from, Outlet<Out> to, boolean doFinish, boolean doFail, boolean doPull)Install a handler on the given inlet that emits received elements on the given outlet before pulling for more data.protected <Out,In extends Out>
booleanpassAlong$default$3()protected <Out,In extends Out>
booleanpassAlong$default$4()protected <Out,In extends Out>
booleanpassAlong$default$5()voidpostStop()Invoked after processing of external events stopped because the operator is about to stop or fail.voidpreStart()Invoked before any external events are processed, at the startup of the operator.protected <T> voidpull(Inlet<T> in)Requests an element on the given port.protected <T> voidpush(Outlet<T> out, T elem)Emits an element through the given output port.protected <T> voidread(Inlet<T> in, Procedure<T> andThen, Effect onClose)Java API: Read an element from the given inlet and continue with the given function, suspending execution if necessary.protected <T> voidread(Inlet<T> in, scala.Function1<T,scala.runtime.BoxedUnit> andThen, scala.Function0<scala.runtime.BoxedUnit> onClose)Read an element from the given inlet and continue with the given function, suspending execution if necessary.protected <T> voidreadN(Inlet<T> in, int n, Procedure<java.util.List<T>> andThen, Procedure<java.util.List<T>> onClose)Java API: Read a number of elements from the given inlet and continue with the given function, suspending execution if necessary.protected <T> voidreadN(Inlet<T> in, int n, scala.Function1<scala.collection.immutable.Seq<T>,scala.runtime.BoxedUnit> andThen, scala.Function1<scala.collection.immutable.Seq<T>,scala.runtime.BoxedUnit> onClose)Read a number of elements from the given inlet and continue with the given function, suspending execution if necessary.protected voidsetHandler(Inlet<?> in, InHandler handler)Assigns callbacks for the events for anInletprotected voidsetHandler(Outlet<?> out, OutHandler handler)Assigns callbacks for the events for anOutletprotected voidsetHandlers(Inlet<?> in, Outlet<?> out, InHandler handler)Assign callbacks for linear operator for bothInletandOutletprotected voidsetKeepGoing(boolean enabled)Controls whether this operator shall shut down when all its ports are closed, which is the default.GraphStageLogic.StageActorstageActor()protected java.lang.StringstageActorName()Override and return a name to be given to the StageActor of this operator.protected MaterializersubFusingMaterializer()Anpekko.stream.Materializerthat may run fusable parts of the graphs that it materializes within the same actor as the current GraphStage (if fusing is available).java.lang.StringtoString()protected InHandlertotallyIgnorantInput()Input handler that does not terminate the operator upon receiving completion nor failure.protected <T> voidtryPull(Inlet<T> in)Requests an element on the given port unless the port is already closed.
-
-
-
Constructor Detail
-
GraphStageLogic
public GraphStageLogic(Shape shape)
-
-
Method Detail
-
inCount
public int inCount()
-
outCount
public int outCount()
-
materializer
protected Materializer materializer()
Thepekko.stream.Materializerthat has set this GraphStage in motion.Can not be used from a
GraphStageconstructor. Access to materializer is provided by thepekko.stream.scaladsl.Source.fromMaterializer,pekko.stream.scaladsl.Flow.fromMaterializerandpekko.stream.scaladsl.Sink.fromMaterializerand their corresponding Java API factories.
-
subFusingMaterializer
protected Materializer subFusingMaterializer()
Anpekko.stream.Materializerthat may run fusable parts of the graphs that it materializes within the same actor as the current GraphStage (if fusing is available). This materializer must not be shared outside of the GraphStage.
-
eagerTerminateInput
protected final InHandler eagerTerminateInput()
Input handler that terminates the operator upon receiving completion. The operator fails upon receiving a failure.
-
ignoreTerminateInput
protected final InHandler ignoreTerminateInput()
Input handler that does not terminate the operator upon receiving completion. The operator fails upon receiving a failure.
-
conditionalTerminateInput
protected final InHandler conditionalTerminateInput(scala.Function0<java.lang.Object> predicate)
Input handler that terminates the state upon receiving completion if the given condition holds at that time. The operator fails upon receiving a failure.
-
totallyIgnorantInput
protected final InHandler totallyIgnorantInput()
Input handler that does not terminate the operator upon receiving completion nor failure.
-
eagerTerminateOutput
protected final OutHandler eagerTerminateOutput()
Output handler that terminates the operator upon cancellation.
-
ignoreTerminateOutput
protected final OutHandler ignoreTerminateOutput()
Output handler that does not terminate the operator upon cancellation.
-
conditionalTerminateOutput
protected final OutHandler conditionalTerminateOutput(scala.Function0<java.lang.Object> predicate)
Output handler that terminates the state upon receiving completion if the given condition holds at that time. The operator fails upon receiving a failure.
-
setHandler
protected final void setHandler(Inlet<?> in, InHandler handler)
Assigns callbacks for the events for anInlet
-
setHandlers
protected final void setHandlers(Inlet<?> in, Outlet<?> out, InHandler handler)
Assign callbacks for linear operator for bothInletandOutlet
-
getHandler
protected final InHandler getHandler(Inlet<?> in)
Retrieves the current callback for the events on the givenInlet
-
setHandler
protected final void setHandler(Outlet<?> out, OutHandler handler)
Assigns callbacks for the events for anOutlet
-
getHandler
protected final OutHandler getHandler(Outlet<?> out)
Retrieves the current callback for the events on the givenOutlet
-
pull
protected final <T> void pull(Inlet<T> in)
Requests an element on the given port. Calling this method twice before an element arrived will fail. There can only be one outstanding request at any given time. The method<T>hasBeenPulled(org.apache.pekko.stream.Inlet<T>)can be used query whether pull is allowed to be called or not. This method will also fail if the port is already closed.
-
tryPull
protected final <T> void tryPull(Inlet<T> in)
Requests an element on the given port unless the port is already closed. Calling this method twice before an element arrived will fail. There can only be one outstanding request at any given time. The method<T>hasBeenPulled(org.apache.pekko.stream.Inlet<T>)can be used query whether pull is allowed to be called or not.
-
cancel
protected final <T> void cancel(Inlet<T> in)
Requests to stop receiving events from a given input port. Cancelling clears any ungrabbed elements from the port.If cancellation is due to an error, use
cancel(in, cause)instead to propagate that cause upstream. This overload is a shortcut forcancel(in, SubscriptionWithCancelException.NoMoreElementsNeeded)
-
cancel
protected final <T> void cancel(Inlet<T> in, java.lang.Throwable cause)
Requests to stop receiving events from a given input port. Cancelling clears any ungrabbed elements from the port.
-
grab
protected final <T> T grab(Inlet<T> in)
Once the callbackInHandler.onPushfor an input port has been invoked, the element that has been pushed can be retrieved via this method. After<T>grab(org.apache.pekko.stream.Inlet<T>)has been called the port is considered to be empty, and further calls to<T>grab(org.apache.pekko.stream.Inlet<T>)will fail until the port is pulled again and a new element is pushed as a response.The method
<T>isAvailable(org.apache.pekko.stream.Inlet<T>)can be used to query if the port has an element that can be grabbed or not.
-
hasBeenPulled
protected final <T> boolean hasBeenPulled(Inlet<T> in)
Indicates whether there is already a pending pull for the given input port. If this method returns true then<T>isAvailable(org.apache.pekko.stream.Inlet<T>)must return false for that same port.
-
isAvailable
protected final <T> boolean isAvailable(Inlet<T> in)
Indicates whether there is an element waiting at the given input port.<T>grab(org.apache.pekko.stream.Inlet<T>)can be used to retrieve the element. After calling<T>grab(org.apache.pekko.stream.Inlet<T>)this method will return false.If this method returns true then
<T>hasBeenPulled(org.apache.pekko.stream.Inlet<T>)will return false for that same port.
-
isClosed
protected final <T> boolean isClosed(Inlet<T> in)
Indicates whether the port has been closed. A closed port cannot be pulled.
-
push
protected final <T> void push(Outlet<T> out, T elem)
Emits an element through the given output port. Calling this method twice before a<T>pull(org.apache.pekko.stream.Inlet<T>)has been arrived will fail. There can be only one outstanding push request at any given time. The method<T>isAvailable(org.apache.pekko.stream.Inlet<T>)can be used to check if the port is ready to be pushed or not.
-
setKeepGoing
protected final void setKeepGoing(boolean enabled)
Controls whether this operator shall shut down when all its ports are closed, which is the default. In order to have it keep going past that point this method needs to be called with atrueargument before all ports are closed, and afterwards it will not be closed until this method is called with afalseargument or the operator is terminated viacompleteStage()orfailStage().
-
complete
protected final <T> void complete(Outlet<T> out)
Signals that there will be no more elements emitted on the given port.
-
fail
protected final <T> void fail(Outlet<T> out, java.lang.Throwable ex)
Signals failure through the given port.
-
completeStage
public final void completeStage()
Automatically invokes<T>cancel(org.apache.pekko.stream.Inlet<T>)or<T>complete(org.apache.pekko.stream.Outlet<T>)on all the input or output ports that have been called, then marks the operator as stopped.
-
cancelStage
public final void cancelStage(java.lang.Throwable cause)
Automatically invokes<T>cancel(org.apache.pekko.stream.Inlet<T>)or<T>complete(org.apache.pekko.stream.Outlet<T>)on all the input or output ports that have been called, then marks the stage as stopped.
-
failStage
public final void failStage(java.lang.Throwable ex)
Automatically invokes<T>cancel(org.apache.pekko.stream.Inlet<T>)or<T>fail(org.apache.pekko.stream.Outlet<T>,java.lang.Throwable)on all the input or output ports that have been called, then marks the operator as stopped.
-
isAvailable
public final <T> boolean isAvailable(Outlet<T> out)
Return true if the given output port is ready to be pushed.
-
isClosed
protected final <T> boolean isClosed(Outlet<T> out)
Indicates whether the port has been closed. A closed port cannot be pushed.
-
readN
protected final <T> void readN(Inlet<T> in, int n, scala.Function1<scala.collection.immutable.Seq<T>,scala.runtime.BoxedUnit> andThen, scala.Function1<scala.collection.immutable.Seq<T>,scala.runtime.BoxedUnit> onClose)
Read a number of elements from the given inlet and continue with the given function, suspending execution if necessary. This action replaces theInHandlerfor the given inlet if suspension is needed and reinstalls the current handler upon receiving the lastonPush()signal.If upstream closes before N elements have been read, the
onClosefunction is invoked with the elements which were read.
-
readN
protected final <T> void readN(Inlet<T> in, int n, Procedure<java.util.List<T>> andThen, Procedure<java.util.List<T>> onClose)
Java API: Read a number of elements from the given inlet and continue with the given function, suspending execution if necessary. This action replaces theInHandlerfor the given inlet if suspension is needed and reinstalls the current handler upon receiving the lastonPush()signal (before invoking theandThenfunction).
-
read
protected final <T> void read(Inlet<T> in, scala.Function1<T,scala.runtime.BoxedUnit> andThen, scala.Function0<scala.runtime.BoxedUnit> onClose)
Read an element from the given inlet and continue with the given function, suspending execution if necessary. This action replaces theInHandlerfor the given inlet if suspension is needed and reinstalls the current handler upon receiving theonPush()signal (before invoking theandThenfunction).
-
read
protected final <T> void read(Inlet<T> in, Procedure<T> andThen, Effect onClose)
Java API: Read an element from the given inlet and continue with the given function, suspending execution if necessary. This action replaces theInHandlerfor the given inlet if suspension is needed and reinstalls the current handler upon receiving theonPush()signal (before invoking theandThenfunction).
-
abortReading
protected final void abortReading(Inlet<?> in)
Abort outstanding (suspended) reading for the given inlet, if there is any. This will reinstall the replaced handler that was in effect before thereadcall.
-
emitMultiple
protected final <T> void emitMultiple(Outlet<T> out, scala.collection.immutable.Iterable<T> elems, scala.Function0<scala.runtime.BoxedUnit> andThen)
Emit a sequence of elements through the given outlet and continue with the given thunk afterwards, suspending execution if necessary. This action replaces theOutHandlerfor the given outlet if suspension is needed and reinstalls the current handler upon receiving anonPull()signal (before invoking theandThenfunction).
-
emitMultiple
protected final <T> void emitMultiple(Outlet<T> out, scala.collection.immutable.Iterable<T> elems)
Emit a sequence of elements through the given outlet, suspending execution if necessary. This action replaces theOutHandlerfor the given outlet if suspension is needed and reinstalls the current handler upon receiving anonPull()signal.
-
emitMultiple
protected final <T> void emitMultiple(Outlet<T> out, java.util.Iterator<T> elems)
Java APIEmit a sequence of elements through the given outlet, suspending execution if necessary. This action replaces the
AbstractOutHandlerfor the given outlet if suspension is needed and reinstalls the current handler upon receiving anonPull()signal.
-
emitMultiple
protected final <T> void emitMultiple(Outlet<T> out, java.util.Iterator<T> elems, Effect andThen)
Java APIEmit a sequence of elements through the given outlet, suspending execution if necessary. This action replaces the
AbstractOutHandlerfor the given outlet if suspension is needed and reinstalls the current handler upon receiving anonPull()signal.
-
emitMultiple
protected final <T> void emitMultiple(Outlet<T> out, scala.collection.Iterator<T> elems, scala.Function0<scala.runtime.BoxedUnit> andThen)
Emit a sequence of elements through the given outlet and continue with the given thunk afterwards, suspending execution if necessary. This action replaces theOutHandlerfor the given outlet if suspension is needed and reinstalls the current handler upon receiving anonPull()signal (before invoking theandThenfunction).
-
emitMultiple
protected final <T> void emitMultiple(Outlet<T> out, scala.collection.Iterator<T> elems)
Emit a sequence of elements through the given outlet, suspending execution if necessary. This action replaces theOutHandlerfor the given outlet if suspension is needed and reinstalls the current handler upon receiving anonPull()signal.
-
emit
protected final <T> void emit(Outlet<T> out, T elem, scala.Function0<scala.runtime.BoxedUnit> andThen)
Emit an element through the given outlet and continue with the given thunk afterwards, suspending execution if necessary. This action replaces theOutHandlerfor the given outlet if suspension is needed and reinstalls the current handler upon receiving anonPull()signal (before invoking theandThenfunction).
-
emit
protected final <T> void emit(Outlet<T> out, T elem)
Emit an element through the given outlet, suspending execution if necessary. This action replaces theOutHandlerfor the given outlet if suspension is needed and reinstalls the current handler upon receiving anonPull()signal.
-
abortEmitting
protected final void abortEmitting(Outlet<?> out)
Abort outstanding (suspended) emissions for the given outlet, if there are any. This will reinstall the replaced handler that was in effect before theemitcall.
-
passAlong
protected final <Out,In extends Out> void passAlong(Inlet<In> from, Outlet<Out> to, boolean doFinish, boolean doFail, boolean doPull)
Install a handler on the given inlet that emits received elements on the given outlet before pulling for more data.doFinishanddoFailcontrol whether completion or failure of the given inlet shall lead to operator termination or not.doPullinstructs to perform one initial pull on thefromport.
-
passAlong$default$3
protected final <Out,In extends Out> boolean passAlong$default$3()
-
passAlong$default$4
protected final <Out,In extends Out> boolean passAlong$default$4()
-
passAlong$default$5
protected final <Out,In extends Out> boolean passAlong$default$5()
-
getAsyncCallback
public final <T> AsyncCallback<T> getAsyncCallback(scala.Function1<T,scala.runtime.BoxedUnit> handler)
Obtain a callback object that can be used asynchronously to re-enter the currentGraphStagewith an asynchronous notification. Theinvokemethod of the returnedAsyncCallbackis safe to be called from other threads. It will in the background thread-safely delegate to the passed callback function. I.e.invokewill 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
AsyncCallbackwill buffer events until stream is available.AsyncCallback.invokeWithFeedbackhas 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
onPushandonPull.This object can be cached and reused within the same
GraphStageLogic.
-
createAsyncCallback
protected final <T> AsyncCallback<T> createAsyncCallback(Procedure<T> handler)
Java API: Obtain a callback object that can be used asynchronously to re-enter the currentGraphStagewith an asynchronous notification. Theinvokemethod of the returnedAsyncCallbackis safe to be called from other threads. It will in the background thread-safely delegate to the passed callback function. I.e.invokewill be called by other thread and the passed handler will be invoked eventually in a thread-safe way by the execution environment.AsyncCallback.invokeWithFeedbackhas an internal promise that will be failed if event cannot be processed due to stream completion.This object can be cached and reused within the same
GraphStageLogic.
-
stageActor
public final GraphStageLogic.StageActor stageActor()
-
getStageActor
protected final GraphStageLogic.StageActor getStageActor(scala.Function1<scala.Tuple2<ActorRef,java.lang.Object>,scala.runtime.BoxedUnit> receive)
Initialize aStageActorRefwhich can be used to interact with from the outside world "as-if" anActor. The messages are looped through the<T>getAsyncCallback(scala.Function1<T,scala.runtime.BoxedUnit>)mechanism ofGraphStageso they are safe to modify internal state of this operator.This method must (the earliest) be called after the
GraphStageLogicconstructor has finished running, for example from thepreStart()callback the graph operator logic provides.Created
StageActorRefto get messages and watch other actors in synchronous way.The
StageActorRef's lifecycle is bound to the operator, in other words when the operator is finished, the Actor will be terminated as well. The entity backing theStageActorRefis not a real Actor, but theGraphStageLogicitself, therefore it does not react toPoisonPill.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
onPushandonPull.- Parameters:
receive- callback that will be called upon receiving of a message by this special Actor- Returns:
- minimal actor with watch method
-
getEagerStageActor
protected GraphStageLogic.StageActor getEagerStageActor(Materializer eagerMaterializer, scala.Function1<scala.Tuple2<ActorRef,java.lang.Object>,scala.runtime.BoxedUnit> receive)
INTERNAL APITo 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
onPushandonPull.
-
stageActorName
protected java.lang.String stageActorName()
Override and return a name to be given to the StageActor of this operator.This method will be only invoked and used once, during the first
getStageActor(scala.Function1<scala.Tuple2<org.apache.pekko.actor.ActorRef,java.lang.Object>,scala.runtime.BoxedUnit>)invocation whichc reates the actor, since subsequentgetStageActorscalls function likebecome, rather than creating new actors.Returns an empty string by default, which means that the name will a unique generated String (e.g. "$$a").
-
beforePreStart
protected void beforePreStart()
INTERNAL API
-
afterPostStop
protected void afterPostStop()
INTERNAL API
-
preStart
public void preStart() throws java.lang.ExceptionInvoked before any external events are processed, at the startup of the operator.- Throws:
java.lang.Exception
-
postStop
public void postStop() throws java.lang.ExceptionInvoked after processing of external events stopped because the operator is about to stop or fail.- Throws:
java.lang.Exception
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-