Class SharedKillSwitch
- All Implemented Interfaces:
KillSwitch
SharedKillSwitch is a provider for Graphs of FlowShape that can be completed or failed from the outside.
A Graph returned by the switch can be materialized arbitrary amount of times: every newly materialized Graph
belongs to the switch from which it was acquired. Multiple SharedKillSwitch instances are isolated from each other,
shutting down or aborting on instance does not affect the Graphs provided by another instance.
After calling shutdown() all materialized, running instances of all Graphs provided by the
SharedKillSwitch will complete their downstreams and cancel their upstreams (unless if finished or failed already in which
case the command is ignored). Subsequent invocations of shutdown() and abort(java.lang.Throwable) will be
ignored.
After calling abort(java.lang.Throwable) all materialized, running instances of all Graphs provided by the
SharedKillSwitch will fail their downstreams with the provided exception and cancel their upstreams
(unless it finished or failed already in which case the command is ignored). Subsequent invocations of
shutdown() and abort(java.lang.Throwable) will be ignored.
The Graphs provided by the SharedKillSwitch do not modify the passed through elements in any way or affect
backpressure in the stream. All provided Graphs provide the parent SharedKillSwitch as materialized value.
This class is thread-safe, the instance can be passed safely among threads and its methods may be invoked concurrently.
-
Method Summary
Modifier and TypeMethodDescriptionvoidAfter callingabort(java.lang.Throwable)all materialized, running instances of allGraphs provided by theSharedKillSwitchwill fail their downstreams with the provided exception and cancel their upstreams (unless it finished or failed already in which case the command is ignored).<T> Graph<FlowShape<T,T>, SharedKillSwitch> flow()Returns a typed Flow of a requested type that will be linked to thisSharedKillSwitchinstance.name()voidshutdown()After callingshutdown()all materialized, running instances of allGraphs provided by theSharedKillSwitchwill complete their downstreams and cancel their upstreams (unless if finished or failed already in which case the command is ignored).toString()
-
Method Details
-
abort
After callingabort(java.lang.Throwable)all materialized, running instances of allGraphs provided by theSharedKillSwitchwill fail their downstreams with the provided exception and cancel their upstreams (unless it finished or failed already in which case the command is ignored). Subsequent invocations ofshutdown()andabort(java.lang.Throwable)will be ignored.These provided
Graphs materialize to their owning switch. This might make certain integrations simpler than passing around the switch instance itself.- Specified by:
abortin interfaceKillSwitch- Parameters:
reason- The exception to be used for failing the linkedGraphs
-
flow
Returns a typed Flow of a requested type that will be linked to thisSharedKillSwitchinstance. By invokingshutdown()orabort(java.lang.Throwable)all running instances of all providedGraphs by this switch will be stopped normally or failed.- Returns:
- A reusable
Graphthat is linked with the switch. The materialized value provided is this switch itself.
-
name
-
shutdown
public void shutdown()After callingshutdown()all materialized, running instances of allGraphs provided by theSharedKillSwitchwill complete their downstreams and cancel their upstreams (unless if finished or failed already in which case the command is ignored). Subsequent invocations ofshutdown()andabort(java.lang.Throwable)will be ignored.- Specified by:
shutdownin interfaceKillSwitch
-
toString
-