Class FlowableDistinctUntilChanged.DistinctUntilChangedConditionalSubscriber<T,K>
java.lang.Object
io.reactivex.rxjava3.internal.subscribers.BasicFuseableConditionalSubscriber<T,T>
io.reactivex.rxjava3.internal.operators.flowable.FlowableDistinctUntilChanged.DistinctUntilChangedConditionalSubscriber<T,K>
- All Implemented Interfaces:
FlowableSubscriber<T>
,ConditionalSubscriber<T>
,QueueFuseable<T>
,QueueSubscription<T>
,SimpleQueue<T>
,org.reactivestreams.Subscriber<T>
,org.reactivestreams.Subscription
- Enclosing class:
FlowableDistinctUntilChanged<T,
K>
static final class FlowableDistinctUntilChanged.DistinctUntilChangedConditionalSubscriber<T,K>
extends BasicFuseableConditionalSubscriber<T,T>
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final BiPredicate
<? super K, ? super K> (package private) boolean
(package private) K
Fields inherited from class io.reactivex.rxjava3.internal.subscribers.BasicFuseableConditionalSubscriber
done, downstream, qs, sourceMode, upstream
-
Constructor Summary
ConstructorsConstructorDescriptionDistinctUntilChangedConditionalSubscriber
(ConditionalSubscriber<? super T> actual, Function<? super T, K> keySelector, BiPredicate<? super K, ? super K> comparer) -
Method Summary
Methods inherited from class io.reactivex.rxjava3.internal.subscribers.BasicFuseableConditionalSubscriber
afterDownstream, beforeDownstream, cancel, clear, fail, isEmpty, offer, offer, onComplete, onError, onSubscribe, request, transitiveBoundaryFusion
-
Field Details
-
keySelector
-
comparer
-
last
K last -
hasValue
boolean hasValue
-
-
Constructor Details
-
DistinctUntilChangedConditionalSubscriber
DistinctUntilChangedConditionalSubscriber(ConditionalSubscriber<? super T> actual, Function<? super T, K> keySelector, BiPredicate<? super K, ? super K> comparer)
-
-
Method Details
-
onNext
-
tryOnNext
Description copied from interface:ConditionalSubscriber
Conditionally takes the value.- Parameters:
t
- the value to deliver- Returns:
- true if the value has been accepted, false if the value has been rejected and the next value can be sent immediately
-
requestFusion
public int requestFusion(int mode) Description copied from interface:QueueFuseable
Request a fusion mode from the upstream.This should be called before
onSubscribe
returns.Calling this method multiple times or after
onSubscribe
finished is not allowed and may result in undefined behavior.- Parameters:
mode
- the requested fusion mode, allowed values areQueueFuseable.SYNC
,QueueFuseable.ASYNC
,QueueFuseable.ANY
combined withQueueFuseable.BOUNDARY
(e.g.,requestFusion(SYNC | BOUNDARY)
).- Returns:
- the established fusion mode:
QueueFuseable.NONE
,QueueFuseable.SYNC
,QueueFuseable.ASYNC
.
-
poll
Description copied from interface:SimpleQueue
Tries to dequeue a value (non-null) or returns null if the queue is empty.If the producer uses
SimpleQueue.offer(Object, Object)
and when polling in pairs, if the first poll() returns a non-null item, the second poll() is guaranteed to return a non-null item as well.- Returns:
- the item or null to indicate an empty queue
- Throws:
Throwable
- if some pre-processing of the dequeued item (usually through fused functions) throws.
-