Class UnicastSubject.State<T>
- Type Parameters:
T- the value type
- All Implemented Interfaces:
Serializable,Action,Action1<Subscriber<? super T>>,Function,Observable.OnSubscribe<T>,Observer<T>,Producer,Subscription
- Enclosing class:
UnicastSubject<T>
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) booleanIndicates the queue can be bypassed because the child has caught up with the replay.(package private) booleanIndicates the source has terminated.(package private) booleanEmitter loop: emitting indicator.(package private) ThrowableIn case the source emitted an error.(package private) booleanEmitter loop: missed emission indicator.(package private) final NotificationLite<T> JCTools queues don't accept nulls.The queue holding values until the subscriber arrives and catches up.private static final long(package private) final AtomicReference<Subscriber<? super T>> The single subscriber.(package private) final AtomicReference<Action0> Atomically set to true on terminal condition. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcall(Subscriber<? super T> subscriber) Tries to set the given subscriber if not already set, sending an IllegalStateException to the subscriber otherwise.(package private) booleancheckTerminated(boolean done, boolean empty, Subscriber<? super T> s) Checks if one of the terminal conditions have been met: child unsubscribed, an error happened or the source terminated and the queue is empty(package private) voidCall the optional termination action at most once.booleanIndicates whether thisSubscriptionis currently unsubscribed.voidNotifies the Observer that theObservablehas finished sending push-based notifications.voidNotifies the Observer that theObservablehas experienced an error condition.voidProvides the Observer with a new item to observe.(package private) voidreplay()Tries to replay the contents of the queue.voidrequest(long n) Request a certain maximum number of items from this Producer.voidTerminates the state by setting the done flag and tries to clear the queue.Methods inherited from class java.util.concurrent.atomic.AtomicLong
accumulateAndGet, addAndGet, compareAndExchange, compareAndExchangeAcquire, compareAndExchangeRelease, compareAndSet, decrementAndGet, doubleValue, floatValue, get, getAcquire, getAndAccumulate, getAndAdd, getAndDecrement, getAndIncrement, getAndSet, getAndUpdate, getOpaque, getPlain, incrementAndGet, intValue, lazySet, longValue, set, setOpaque, setPlain, setRelease, toString, updateAndGet, weakCompareAndSet, weakCompareAndSetAcquire, weakCompareAndSetPlain, weakCompareAndSetRelease, weakCompareAndSetVolatileMethods inherited from class java.lang.Number
byteValue, shortValue
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
subscriber
The single subscriber. -
queue
The queue holding values until the subscriber arrives and catches up. -
nl
JCTools queues don't accept nulls. -
terminateOnce
Atomically set to true on terminal condition. -
error
Throwable errorIn case the source emitted an error. -
done
volatile boolean doneIndicates the source has terminated. -
emitting
boolean emittingEmitter loop: emitting indicator. Guarded by this. -
missed
boolean missedEmitter loop: missed emission indicator. Guarded by this. -
caughtUp
volatile boolean caughtUpIndicates the queue can be bypassed because the child has caught up with the replay.
-
-
Constructor Details
-
State
Constructor.- Parameters:
capacityHint- indicates how large each island in the Spsc queue should be to reduce allocation frequencyonTerminated- the action to call when the subject reaches its terminal state or the single subscriber unsubscribes.
-
-
Method Details
-
onNext
Description copied from interface:ObserverProvides the Observer with a new item to observe.The
Observablemay call this method 0 or more times.The
Observablewill not call this method again after it calls eitherObserver.onCompleted()orObserver.onError(java.lang.Throwable). -
onError
Description copied from interface:ObserverNotifies the Observer that theObservablehas experienced an error condition.If the
Observablecalls this method, it will not thereafter callObserver.onNext(T)orObserver.onCompleted(). -
onCompleted
public void onCompleted()Description copied from interface:ObserverNotifies the Observer that theObservablehas finished sending push-based notifications.The
Observablewill not call this method if it callsObserver.onError(java.lang.Throwable).- Specified by:
onCompletedin interfaceObserver<T>
-
request
public void request(long n) Description copied from interface:ProducerRequest a certain maximum number of items from this Producer. This is a way of requesting backpressure. To disable backpressure, passLong.MAX_VALUEto this method.Requests are additive but if a sequence of requests totals more than
Long.MAX_VALUEthenLong.MAX_VALUErequests will be actioned and the extras may be ignored. Arriving atLong.MAX_VALUEby addition of requests cannot be assumed to disable backpressure. For example, the code below may result inLong.MAX_VALUErequests being actioned only.request(100); request(Long.MAX_VALUE-1);
-
call
Tries to set the given subscriber if not already set, sending an IllegalStateException to the subscriber otherwise. -
replay
void replay()Tries to replay the contents of the queue. -
unsubscribe
public void unsubscribe()Terminates the state by setting the done flag and tries to clear the queue. Should be called only when the child unsubscribes- Specified by:
unsubscribein interfaceSubscription
-
isUnsubscribed
public boolean isUnsubscribed()Description copied from interface:SubscriptionIndicates whether thisSubscriptionis currently unsubscribed.- Specified by:
isUnsubscribedin interfaceSubscription- Returns:
trueif thisSubscriptionis currently unsubscribed,falseotherwise
-
checkTerminated
Checks if one of the terminal conditions have been met: child unsubscribed, an error happened or the source terminated and the queue is empty- Parameters:
done-empty-s-- Returns:
-
doTerminate
void doTerminate()Call the optional termination action at most once.
-