Class AsyncIterablePublisher.SubscriptionImpl
java.lang.Object
org.reactivestreams.example.unicast.AsyncIterablePublisher.SubscriptionImpl
- All Implemented Interfaces:
Runnable
,Subscription
- Enclosing class:
AsyncIterablePublisher<T>
final class AsyncIterablePublisher.SubscriptionImpl
extends Object
implements Subscription, Runnable
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
private long
private final ConcurrentLinkedQueue
<AsyncIterablePublisher.Signal> private final AtomicBoolean
(package private) final Subscriber
<? super T> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
cancel()
Request thePublisher
to stop sending data and clean up resources.private void
doCancel()
private void
doRequest
(long n) private void
doSend()
private void
(package private) void
init()
void
request
(long n) No events will be sent by aPublisher
until demand is signaled via this method.final void
run()
private void
signal
(AsyncIterablePublisher.Signal signal) private void
private final void
-
Field Details
-
subscriber
-
cancelled
private boolean cancelled -
demand
private long demand -
iterator
-
inboundSignals
-
on
-
-
Constructor Details
-
SubscriptionImpl
SubscriptionImpl(Subscriber<? super T> subscriber)
-
-
Method Details
-
doRequest
private void doRequest(long n) -
doCancel
private void doCancel() -
doSubscribe
private void doSubscribe() -
doSend
private void doSend() -
terminateDueTo
-
signal
-
run
public final void run() -
tryScheduleToExecute
private final void tryScheduleToExecute() -
request
public void request(long n) Description copied from interface:Subscription
No events will be sent by aPublisher
until demand is signaled via this method.It can be called however often and whenever needed—but if the outstanding cumulative demand ever becomes Long.MAX_VALUE or more, it may be treated by the
Publisher
as "effectively unbounded".Whatever has been requested can be sent by the
Publisher
so only signal demand for what can be safely handled.A
Publisher
can send less than is requested if the stream ends but then must emit eitherSubscriber.onError(Throwable)
orSubscriber.onComplete()
.- Specified by:
request
in interfaceSubscription
- Parameters:
n
- the strictly positive number of elements to requests to the upstreamPublisher
-
cancel
public void cancel()Description copied from interface:Subscription
Request thePublisher
to stop sending data and clean up resources.Data may still be sent to meet previously signalled demand after calling cancel.
- Specified by:
cancel
in interfaceSubscription
-
init
void init()
-