T
- the upstream value typeR
- the downstream value typepublic abstract class BasicFuseableObserver<T,R> extends Object implements Observer<T>, QueueDisposable<R>
Modifier and Type | Field and Description |
---|---|
protected Observer<? super R> |
actual
The downstream subscriber.
|
protected boolean |
done
Flag indicating no further onXXX event should be accepted.
|
protected QueueDisposable<T> |
qs
The upstream's QueueDisposable if not null.
|
protected Disposable |
s
The upstream subscription.
|
protected int |
sourceMode
Holds the established fusion mode of the upstream.
|
Constructor and Description |
---|
BasicFuseableObserver(Observer<? super R> actual)
Construct a BasicFuseableObserver by wrapping the given subscriber.
|
Modifier and Type | Method and Description |
---|---|
protected void |
afterDownstream()
Override this to perform actions after the call to
actual.onSubscribe(this) happened. |
protected boolean |
beforeDownstream()
Override this to perform actions before the call
actual.onSubscribe(this) happens. |
void |
clear()
Removes all enqueued items from this queue.
|
void |
dispose()
Dispose the resource, the operation should be idempotent.
|
protected void |
fail(Throwable t)
Rethrows the throwable if it is a fatal exception or calls
onError(Throwable) . |
boolean |
isDisposed()
Returns true if this resource has been disposed.
|
boolean |
isEmpty()
Returns true if the queue is empty.
|
boolean |
offer(R e)
Atomically enqueue a single.
|
boolean |
offer(R v1,
R v2)
Atomically enqueue two values.
|
void |
onComplete()
Notifies the Observer that the
Observable has finished sending push-based notifications. |
void |
onError(Throwable t)
Notifies the Observer that the
Observable has experienced an error condition. |
void |
onSubscribe(Disposable s)
Provides the Observer with the means of cancelling (disposing) the
connection (channel) with the Observable in both
synchronous (from within
Observer.onNext(Object) ) and asynchronous manner. |
protected int |
transitiveBoundaryFusion(int mode)
Calls the upstream's QueueDisposable.requestFusion with the mode and
saves the established mode in
sourceMode if that mode doesn't
have the QueueFuseable.BOUNDARY flag set. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
requestFusion
poll
protected Disposable s
protected QueueDisposable<T> qs
protected boolean done
protected int sourceMode
public final void onSubscribe(Disposable s)
Observer
Observer.onNext(Object)
) and asynchronous manner.onSubscribe
in interface Observer<T>
s
- the Disposable instance whose Disposable.dispose()
can
be called anytime to cancel the connectionprotected boolean beforeDownstream()
actual.onSubscribe(this)
happens.protected void afterDownstream()
actual.onSubscribe(this)
happened.public void onError(Throwable t)
Observer
Observable
has experienced an error condition.
If the Observable
calls this method, it will not thereafter call Observer.onNext(T)
or
Observer.onComplete()
.
protected final void fail(Throwable t)
onError(Throwable)
.t
- the throwable to rethrow or signal to the actual subscriberpublic void onComplete()
Observer
Observable
has finished sending push-based notifications.
The Observable
will not call this method if it calls Observer.onError(java.lang.Throwable)
.
onComplete
in interface Observer<T>
protected final int transitiveBoundaryFusion(int mode)
sourceMode
if that mode doesn't
have the QueueFuseable.BOUNDARY
flag set.
If the upstream doesn't support fusion (qs
is null), the method
returns QueueFuseable.NONE
.
mode
- the fusion mode requestedpublic void dispose()
Disposable
dispose
in interface Disposable
public boolean isDisposed()
Disposable
isDisposed
in interface Disposable
public boolean isEmpty()
SimpleQueue
Note however that due to potential fused functions in SimpleQueue.poll()
it is possible this method returns false but then poll() returns null
because the fused function swallowed the available item(s).
isEmpty
in interface SimpleQueue<R>
public void clear()
SimpleQueue
clear
in interface SimpleQueue<R>
public final boolean offer(R e)
SimpleQueue
offer
in interface SimpleQueue<R>
e
- the value to enqueue, not nullpublic final boolean offer(R v1, R v2)
SimpleQueue
offer
in interface SimpleQueue<R>
v1
- the first value to enqueue, not nullv2
- the second value to enqueue, not nullCopyright © 2018 JBoss by Red Hat. All rights reserved.