Interface MaybeEmitter<T>
- Type Parameters:
T
- the value type to emit
- All Known Implementing Classes:
MaybeCreate.Emitter
MaybeObserver
that allows associating
a resource with it.
All methods are safe to call from multiple threads, but note that there is no guarantee whose terminal event will win and get delivered to the downstream.
Calling onSuccess(Object)
or onComplete()
multiple times has no effect.
Calling onError(Throwable)
multiple times or after the other two will route the
exception into the global error handler via RxJavaPlugins.onError(Throwable)
.
The emitter allows the registration of a single resource, in the form of a Disposable
or Cancellable
via setDisposable(Disposable)
or setCancellable(Cancellable)
respectively. The emitter implementations will dispose/cancel this instance when the
downstream cancels the flow or after the event generator logic calls onSuccess(Object)
,
onError(Throwable)
, onComplete()
or when tryOnError(Throwable)
succeeds.
Only one Disposable
or Cancellable
object can be associated with the emitter at
a time. Calling either set
method will dispose/cancel any previous object. If there
is a need for handling multiple resources, one can create a CompositeDisposable
and associate that with the emitter instead.
The Cancellable
is logically equivalent to Disposable
but allows using cleanup logic that can
throw a checked exception (such as many close()
methods on Java IO components). Since
the release of resources happens after the terminal events have been delivered or the sequence gets
cancelled, exceptions throw within Cancellable
are routed to the global error handler via
RxJavaPlugins.onError(Throwable)
.
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Returns true if the downstream disposed the sequence or the emitter was terminated viaonSuccess(Object)
,onError(Throwable)
,onComplete()
or a successfultryOnError(Throwable)
.void
Signal the completion.void
Signal an exception.void
Signal a success value.void
Sets aCancellable
on this emitter; any previousDisposable
orCancellable
will be disposed/cancelled.void
Sets aDisposable
on this emitter; any previousDisposable
orCancellable
will be disposed/cancelled.boolean
Attempts to emit the specifiedThrowable
error if the downstream hasn't cancelled the sequence or is otherwise terminated, returning false if the emission is not allowed to happen due to lifecycle restrictions.
-
Method Details
-
onSuccess
Signal a success value.- Parameters:
t
- the value, not null
-
onError
Signal an exception.- Parameters:
t
- the exception, notnull
-
onComplete
void onComplete()Signal the completion. -
setDisposable
Sets aDisposable
on this emitter; any previousDisposable
orCancellable
will be disposed/cancelled.This method is thread-safe.
- Parameters:
d
- the disposable,null
is allowed
-
setCancellable
Sets aCancellable
on this emitter; any previousDisposable
orCancellable
will be disposed/cancelled.This method is thread-safe.
- Parameters:
c
- theCancellable
resource,null
is allowed
-
isDisposed
boolean isDisposed()Returns true if the downstream disposed the sequence or the emitter was terminated viaonSuccess(Object)
,onError(Throwable)
,onComplete()
or a successfultryOnError(Throwable)
.This method is thread-safe.
- Returns:
- true if the downstream disposed the sequence or the emitter was terminated
-
tryOnError
Attempts to emit the specifiedThrowable
error if the downstream hasn't cancelled the sequence or is otherwise terminated, returning false if the emission is not allowed to happen due to lifecycle restrictions.Unlike
onError(Throwable)
, theRxjavaPlugins.onError
is not called if the error could not be delivered.History: 2.1.1 - experimental
- Parameters:
t
- theThrowable
error to signal if possible- Returns:
- true if successful, false if the downstream is not able to accept further events
- Since:
- 2.2
-