Package rx.internal.operators
Class NotificationLite<T>
java.lang.Object
rx.internal.operators.NotificationLite<T>
- Type Parameters:
T- the element type
For use in internal operators that need something like materialize and dematerialize wholly within the
implementation of the operator but don't want to incur the allocation cost of actually creating
Notification objects for every onNext and
onCompleted.
An object is allocated inside error(Throwable) to wrap the Throwable but this shouldn't
affect performance because exceptions should be exceptionally rare.
It's implemented as a singleton to maintain some semblance of type safety that is completely non-existent.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final NotificationLiteprivate static final Objectprivate static final Object -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanUnwraps the lite notification and calls the appropriate method on theObserver.Creates a liteonCompletednotification without doing any allocation.Create a liteonErrornotification.Returns theThrowablecorresponding to thisOnErrorlite notification.Returns the item corresponding to thisOnNextlite notification.static <T> NotificationLite<T> instance()Gets theNotificationLitesingleton.booleanIndicates whether or not the lite notification represents anonCompletedevent.booleanIndicates whether or not the lite notification represents anonErrorevent.booleanIndicates whether or not the lite notification represents anonNextevent.booleanIndicates whether or not the lite notification represents a wrappednullonNextevent.Indicates which variety a particular lite notification is.Creates a liteonNextnotification for the value passed in without doing any allocation.
-
Field Details
-
INSTANCE
-
ON_COMPLETED_SENTINEL
-
ON_NEXT_NULL_SENTINEL
-
-
Constructor Details
-
NotificationLite
private NotificationLite()
-
-
Method Details
-
instance
Gets theNotificationLitesingleton.- Type Parameters:
T- the value type- Returns:
- the sole
NotificationLiteobject
-
next
Creates a liteonNextnotification for the value passed in without doing any allocation. Can be unwrapped and sent with theaccept(rx.Observer<? super T>, java.lang.Object)method.- Parameters:
t- the item emitted toonNext- Returns:
- the item, or a null token representing the item if the item is
null
-
completed
Creates a liteonCompletednotification without doing any allocation. Can be unwrapped and sent with theaccept(rx.Observer<? super T>, java.lang.Object)method.- Returns:
- a completion token
-
error
Create a liteonErrornotification. This call creates an object to wrap theThrowable, but since there should only be one of these, the performance impact should be small. Can be unwrapped and sent with theaccept(rx.Observer<? super T>, java.lang.Object)method.- Parameters:
e- theThrowablein theonErrornotification- Returns:
- an object encapsulating the exception
-
accept
Unwraps the lite notification and calls the appropriate method on theObserver.- Parameters:
o- theObserverto callonNext,onCompleted, oronError.n- the lite notification- Returns:
trueifnrepresents a termination event;falseotherwise- Throws:
IllegalArgumentException- if the notification is null.NullPointerException- if theObserveris null.
-
isCompleted
Indicates whether or not the lite notification represents anonCompletedevent.- Parameters:
n- the lite notification- Returns:
trueifnrepresents anonCompletedevent;falseotherwise
-
isError
Indicates whether or not the lite notification represents anonErrorevent.- Parameters:
n- the lite notification- Returns:
trueifnrepresents anonErrorevent;falseotherwise
-
isNull
Indicates whether or not the lite notification represents a wrappednullonNextevent.- Parameters:
n- the lite notification- Returns:
trueifnrepresents a wrappednullonNextevent,falseotherwise
-
isNext
Indicates whether or not the lite notification represents anonNextevent.- Parameters:
n- the lite notification- Returns:
trueifnrepresents anonNextevent,falseotherwise
-
kind
Indicates which variety a particular lite notification is. If you need something more complex than simply calling the right method on anObserverthen you can use this method to get theNotification.Kind.- Parameters:
n- the lite notification- Returns:
- the
Notification.Kindof lite notificationnis: eitherKind.OnCompleted,Kind.OnError, orKind.OnNext - Throws:
IllegalArgumentException- if the notification is null.
-
getValue
Returns the item corresponding to thisOnNextlite notification. Bad things happen if you pass this anOnCompleteorOnErrornotification type. For performance reasons, this method does not check for this, so you are expected to prevent such a mishap.- Parameters:
n- the lite notification (of typeKind.OnNext)- Returns:
- the unwrapped value, which can be null
-
getError
Returns theThrowablecorresponding to thisOnErrorlite notification. Bad things happen if you pass this anOnCompleteorOnNextnotification type. For performance reasons, this method does not check for this, so you are expected to prevent such a mishap.- Parameters:
n- the lite notification (of typeKind.OnError)- Returns:
- the
Throwablewrapped insiden
-