Package io.smallrye.mutiny.subscription
Class SwitchableSubscriptionSubscriber<O>
- java.lang.Object
-
- io.smallrye.mutiny.subscription.SwitchableSubscriptionSubscriber<O>
-
- Type Parameters:
O
- outgoing item type
- All Implemented Interfaces:
ContextSupport
,MultiSubscriber<O>
,org.reactivestreams.Subscriber<O>
,org.reactivestreams.Subscription
public abstract class SwitchableSubscriptionSubscriber<O> extends java.lang.Object implements MultiSubscriber<O>, org.reactivestreams.Subscription, ContextSupport
An implementation ofSubscription
that allows switching the upstream, dealing with the requests accordingly.You must invoke
emitted(long)
after delivered items to manage the request per subscription consistently.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.atomic.AtomicReference<org.reactivestreams.Subscription>
currentUpstream
The current upstreamprotected MultiSubscriber<? super O>
downstream
The downstream subscriber
-
Constructor Summary
Constructors Constructor Description SwitchableSubscriptionSubscriber(MultiSubscriber<? super O> downstream)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cancel()
protected boolean
cancelUpstreamOnSwitch()
Context
context()
Provide a context.void
emitted(long n)
boolean
isCancelled()
void
onCompletion()
Method called when the upstream emits acompletion
terminal event.void
onFailure(java.lang.Throwable t)
Method called when the upstream emits afailure
terminal event.void
onSubscribe(org.reactivestreams.Subscription s)
void
request(long n)
long
requested()
protected void
setOrSwitchUpstream(org.reactivestreams.Subscription newUpstream)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.smallrye.mutiny.subscription.MultiSubscriber
onComplete, onError, onItem, onNext
-
-
-
-
Field Detail
-
downstream
protected final MultiSubscriber<? super O> downstream
The downstream subscriber
-
currentUpstream
protected final java.util.concurrent.atomic.AtomicReference<org.reactivestreams.Subscription> currentUpstream
The current upstream
-
-
Constructor Detail
-
SwitchableSubscriptionSubscriber
public SwitchableSubscriptionSubscriber(MultiSubscriber<? super O> downstream)
-
-
Method Detail
-
context
public Context context()
Description copied from interface:ContextSupport
Provide a context.Since calls to this method shall only be triggered when a Mutiny pipeline uses a
withContext
operator, there is no need in general for caching the context value in a field of the implementing class. Exceptions include operators that have cross-subscriber semantics such as memoizers or broadcasters.This method is expected to be called once per
withContext
operator.- Specified by:
context
in interfaceContextSupport
- Returns:
- the context, must not be
null
.
-
cancel
public void cancel()
- Specified by:
cancel
in interfaceorg.reactivestreams.Subscription
-
isCancelled
public boolean isCancelled()
-
onCompletion
public void onCompletion()
Description copied from interface:MultiSubscriber
Method called when the upstream emits acompletion
terminal event.No further events will be sent even if
Subscription.request(long)
is invoked again.- Specified by:
onCompletion
in interfaceMultiSubscriber<O>
-
onFailure
public void onFailure(java.lang.Throwable t)
Description copied from interface:MultiSubscriber
Method called when the upstream emits afailure
terminal event.No further events will be sent even if
Subscription.request(long)
is invoked again.- Specified by:
onFailure
in interfaceMultiSubscriber<O>
- Parameters:
t
- the failure, must not benull
.
-
onSubscribe
public void onSubscribe(org.reactivestreams.Subscription s)
- Specified by:
onSubscribe
in interfaceorg.reactivestreams.Subscriber<O>
-
emitted
public void emitted(long n)
-
requested
public long requested()
-
request
public final void request(long n)
- Specified by:
request
in interfaceorg.reactivestreams.Subscription
-
setOrSwitchUpstream
protected final void setOrSwitchUpstream(org.reactivestreams.Subscription newUpstream)
-
cancelUpstreamOnSwitch
protected boolean cancelUpstreamOnSwitch()
- Returns:
true
if we need to cancel the current subscription when we switch the upstreams.
-
-