Package rx.internal.operators
Class NotificationLite<T>
- java.lang.Object
-
- rx.internal.operators.NotificationLite<T>
-
- Type Parameters:
T
- the element type
public final class NotificationLite<T> extends java.lang.Object
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 creatingNotification
objects for everyonNext
andonCompleted
.An object is allocated inside
error(Throwable)
to wrap theThrowable
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 Classes Modifier and Type Class Description (package private) static class
NotificationLite.OnErrorSentinel
-
Field Summary
Fields Modifier and Type Field Description private static NotificationLite
INSTANCE
private static java.lang.Object
ON_COMPLETED_SENTINEL
private static java.lang.Object
ON_NEXT_NULL_SENTINEL
-
Constructor Summary
Constructors Modifier Constructor Description private
NotificationLite()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
accept(Observer<? super T> o, java.lang.Object n)
Unwraps the lite notification and calls the appropriate method on theObserver
.java.lang.Object
completed()
Creates a liteonCompleted
notification without doing any allocation.java.lang.Object
error(java.lang.Throwable e)
Create a liteonError
notification.java.lang.Throwable
getError(java.lang.Object n)
Returns theThrowable
corresponding to thisOnError
lite notification.T
getValue(java.lang.Object n)
Returns the item corresponding to thisOnNext
lite notification.static <T> NotificationLite<T>
instance()
Gets theNotificationLite
singleton.boolean
isCompleted(java.lang.Object n)
Indicates whether or not the lite notification represents anonCompleted
event.boolean
isError(java.lang.Object n)
Indicates whether or not the lite notification represents anonError
event.boolean
isNext(java.lang.Object n)
Indicates whether or not the lite notification represents anonNext
event.boolean
isNull(java.lang.Object n)
Indicates whether or not the lite notification represents a wrappednull
onNext
event.Notification.Kind
kind(java.lang.Object n)
Indicates which variety a particular lite notification is.java.lang.Object
next(T t)
Creates a liteonNext
notification for the value passed in without doing any allocation.
-
-
-
Field Detail
-
INSTANCE
private static final NotificationLite INSTANCE
-
ON_COMPLETED_SENTINEL
private static final java.lang.Object ON_COMPLETED_SENTINEL
-
ON_NEXT_NULL_SENTINEL
private static final java.lang.Object ON_NEXT_NULL_SENTINEL
-
-
Method Detail
-
instance
public static <T> NotificationLite<T> instance()
Gets theNotificationLite
singleton.- Type Parameters:
T
- the value type- Returns:
- the sole
NotificationLite
object
-
next
public java.lang.Object next(T t)
Creates a liteonNext
notification 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
public java.lang.Object completed()
Creates a liteonCompleted
notification without doing any allocation. Can be unwrapped and sent with theaccept(rx.Observer<? super T>, java.lang.Object)
method.- Returns:
- a completion token
-
error
public java.lang.Object error(java.lang.Throwable e)
Create a liteonError
notification. 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
- theThrowable
in theonError
notification- Returns:
- an object encapsulating the exception
-
accept
public boolean accept(Observer<? super T> o, java.lang.Object n)
Unwraps the lite notification and calls the appropriate method on theObserver
.
-
isCompleted
public boolean isCompleted(java.lang.Object n)
Indicates whether or not the lite notification represents anonCompleted
event.- Parameters:
n
- the lite notification- Returns:
true
ifn
represents anonCompleted
event;false
otherwise
-
isError
public boolean isError(java.lang.Object n)
Indicates whether or not the lite notification represents anonError
event.- Parameters:
n
- the lite notification- Returns:
true
ifn
represents anonError
event;false
otherwise
-
isNull
public boolean isNull(java.lang.Object n)
Indicates whether or not the lite notification represents a wrappednull
onNext
event.- Parameters:
n
- the lite notification- Returns:
true
ifn
represents a wrappednull
onNext
event,false
otherwise
-
isNext
public boolean isNext(java.lang.Object n)
Indicates whether or not the lite notification represents anonNext
event.- Parameters:
n
- the lite notification- Returns:
true
ifn
represents anonNext
event,false
otherwise
-
kind
public Notification.Kind kind(java.lang.Object n)
Indicates which variety a particular lite notification is. If you need something more complex than simply calling the right method on anObserver
then you can use this method to get theNotification.Kind
.- Parameters:
n
- the lite notification- Returns:
- the
Notification.Kind
of lite notificationn
is: eitherKind.OnCompleted
,Kind.OnError
, orKind.OnNext
- Throws:
java.lang.IllegalArgumentException
- if the notification is null.
-
getValue
public T getValue(java.lang.Object n)
Returns the item corresponding to thisOnNext
lite notification. Bad things happen if you pass this anOnComplete
orOnError
notification 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
public java.lang.Throwable getError(java.lang.Object n)
Returns theThrowable
corresponding to thisOnError
lite notification. Bad things happen if you pass this anOnComplete
orOnNext
notification 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
Throwable
wrapped insiden
-
-