T
- the type of items the Subscriber expects to observepublic abstract class Subscriber<T> extends java.lang.Object implements Observer<T>, Subscription
After a Subscriber calls an Observable
's subscribe
method, the
Observable
calls the Subscriber's Observer.onNext(T)
method to emit items. A well-behaved
Observable
will call a Subscriber's Observer.onCompleted()
method exactly once or the Subscriber's
Observer.onError(java.lang.Throwable)
method exactly once.
Modifier | Constructor and Description |
---|---|
protected |
Subscriber() |
protected |
Subscriber(Subscriber<?> subscriber)
Construct a Subscriber by using another Subscriber for backpressure and
for holding the subscription list (when
this.add(sub) is
called this will in fact call subscriber.add(sub) ). |
protected |
Subscriber(Subscriber<?> subscriber,
boolean shareSubscriptions)
Construct a Subscriber by using another Subscriber for backpressure and
optionally for holding the subscription list (if
shareSubscriptions is true then when
this.add(sub) is called this will in fact call
subscriber.add(sub) ). |
Modifier and Type | Method and Description |
---|---|
void |
add(Subscription s)
Adds a
Subscription to this Subscriber's list of subscriptions if this list is not marked as
unsubscribed. |
boolean |
isUnsubscribed()
Indicates whether this Subscriber has unsubscribed from its list of subscriptions.
|
void |
onStart()
This method is invoked when the Subscriber and Observable have been connected but the Observable has
not yet begun to emit items or send notifications to the Subscriber.
|
protected void |
request(long n)
Request a certain maximum number of emitted items from the Observable this Subscriber is subscribed to.
|
void |
setProducer(Producer p)
If other subscriber is set (by calling constructor
Subscriber(Subscriber) or
Subscriber(Subscriber, boolean) ) then this method calls
setProducer on the other subscriber. |
void |
unsubscribe()
Stops the receipt of notifications on the
Subscriber that was registered when this Subscription
was received. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
onCompleted, onError, onNext
protected Subscriber()
protected Subscriber(Subscriber<?> subscriber)
this.add(sub)
is
called this will in fact call subscriber.add(sub)
).subscriber
- the other Subscriberprotected Subscriber(Subscriber<?> subscriber, boolean shareSubscriptions)
shareSubscriptions
is true
then when
this.add(sub)
is called this will in fact call
subscriber.add(sub)
).
To retain the chaining of subscribers when setting
shareSubscriptions
to false
, add the created
instance to subscriber
via add(rx.Subscription)
.
subscriber
- the other SubscribershareSubscriptions
- true
to share the subscription list in subscriber
with
this instancepublic final void add(Subscription s)
Subscription
to this Subscriber's list of subscriptions if this list is not marked as
unsubscribed. If the list is marked as unsubscribed, add
will indicate this by
explicitly unsubscribing the new Subscription
as well.s
- the Subscription
to addpublic final void unsubscribe()
Subscription
Subscriber
that was registered when this Subscription
was received.
This allows deregistering an Subscriber
before it has finished receiving all events (i.e. before
onCompleted is called).
unsubscribe
in interface Subscription
public final boolean isUnsubscribed()
isUnsubscribed
in interface Subscription
true
if this Subscriber has unsubscribed from its subscriptions, false
otherwisepublic void onStart()
protected final void request(long n)
Long.MAX_VALUE
to this
method.
Requests are additive but if a sequence of requests totals more than Long.MAX_VALUE
then
Long.MAX_VALUE
requests will be actioned and the extras may be ignored. Arriving at
Long.MAX_VALUE
by addition of requests cannot be assumed to disable backpressure. For example,
the code below may result in Long.MAX_VALUE
requests being actioned only.
request(100); request(Long.MAX_VALUE-1);
n
- the maximum number of items you want the Observable to emit to the Subscriber at this time, or
Long.MAX_VALUE
if you want the Observable to emit items at its own pacejava.lang.IllegalArgumentException
- if n
is negativepublic void setProducer(Producer p)
Subscriber(Subscriber)
or
Subscriber(Subscriber, boolean)
) then this method calls
setProducer
on the other subscriber. If the other subscriber
is not set and no requests have been made to this subscriber then
p.request(Long.MAX_VALUE)
is called. If the other subscriber
is not set and some requests have been made to this subscriber then
p.request(n)
is called where n is the accumulated requests
to this subscriber.p
- producer to be used by this subscriber or the other subscriber
(or recursively its other subscriber) to make requests from