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:
MultiSubscriber<O>,org.reactivestreams.Subscriber<O>,org.reactivestreams.Subscription
- Direct Known Subclasses:
MultiRepeatUntilOp.RepeatProcessor
public abstract class SwitchableSubscriptionSubscriber<O> extends java.lang.Object implements MultiSubscriber<O>, org.reactivestreams.Subscription
An implementation ofSubscriptionthat 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>currentUpstreamThe current upstreamprotected MultiSubscriber<? super O>downstreamThe 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 voidcancel()protected booleancancelUpstreamOnSwitch()voidemitted(long n)booleanisCancelled()voidonCompletion()Method called when the upstream emits acompletionterminal event.voidonFailure(java.lang.Throwable t)Method called when the upstream emits afailureterminal event.voidonSubscribe(org.reactivestreams.Subscription s)voidrequest(long n)protected voidsetOrSwitchUpstream(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
-
cancel
public void cancel()
- Specified by:
cancelin interfaceorg.reactivestreams.Subscription
-
isCancelled
public boolean isCancelled()
-
onCompletion
public void onCompletion()
Description copied from interface:MultiSubscriberMethod called when the upstream emits acompletionterminal event.No further events will be sent even if
Subscription.request(long)is invoked again.- Specified by:
onCompletionin interfaceMultiSubscriber<O>
-
onFailure
public void onFailure(java.lang.Throwable t)
Description copied from interface:MultiSubscriberMethod called when the upstream emits afailureterminal event.No further events will be sent even if
Subscription.request(long)is invoked again.- Specified by:
onFailurein interfaceMultiSubscriber<O>- Parameters:
t- the failure, must not benull.
-
onSubscribe
public void onSubscribe(org.reactivestreams.Subscription s)
- Specified by:
onSubscribein interfaceorg.reactivestreams.Subscriber<O>
-
emitted
public void emitted(long n)
-
request
public final void request(long n)
- Specified by:
requestin interfaceorg.reactivestreams.Subscription
-
setOrSwitchUpstream
protected final void setOrSwitchUpstream(org.reactivestreams.Subscription newUpstream)
-
cancelUpstreamOnSwitch
protected boolean cancelUpstreamOnSwitch()
- Returns:
trueif we need to cancel the current subscription when we switch the upstreams.
-
-