178 lines
6.4 KiB
Java
178 lines
6.4 KiB
Java
package io.reactivex.internal.operators.observable;
|
|
|
|
import android.Manifest;
|
|
import io.reactivex.Observable;
|
|
import io.reactivex.ObservableSource;
|
|
import io.reactivex.Observer;
|
|
import io.reactivex.exceptions.Exceptions;
|
|
import io.reactivex.functions.Function;
|
|
import io.reactivex.internal.disposables.EmptyDisposable;
|
|
import io.reactivex.internal.functions.ObjectHelper;
|
|
import io.reactivex.internal.fuseable.QueueDisposable;
|
|
import io.reactivex.plugins.RxJavaPlugins;
|
|
import java.util.concurrent.Callable;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class ObservableScalarXMap {
|
|
|
|
public static final class ScalarDisposable<T> extends AtomicInteger implements QueueDisposable<T>, Runnable {
|
|
static final int FUSED = 1;
|
|
static final int ON_COMPLETE = 3;
|
|
static final int ON_NEXT = 2;
|
|
static final int START = 0;
|
|
private static final long serialVersionUID = 3880992722410194083L;
|
|
final Observer<? super T> observer;
|
|
final T value;
|
|
|
|
public ScalarDisposable(Observer<? super T> observer, T t) {
|
|
this.observer = observer;
|
|
this.value = t;
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public void clear() {
|
|
lazySet(3);
|
|
}
|
|
|
|
@Override // io.reactivex.disposables.Disposable
|
|
public void dispose() {
|
|
set(3);
|
|
}
|
|
|
|
public boolean isDisposed() {
|
|
return get() == 3;
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public boolean isEmpty() {
|
|
return get() != 1;
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public boolean offer(T t) {
|
|
throw new UnsupportedOperationException("Should not be called!");
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public T poll() throws Exception {
|
|
if (get() != 1) {
|
|
return null;
|
|
}
|
|
lazySet(3);
|
|
return this.value;
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.QueueFuseable
|
|
public int requestFusion(int i) {
|
|
if ((i & 1) == 0) {
|
|
return 0;
|
|
}
|
|
lazySet(1);
|
|
return 1;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
if (get() == 0 && compareAndSet(0, 2)) {
|
|
this.observer.onNext(this.value);
|
|
if (get() == 2) {
|
|
lazySet(3);
|
|
this.observer.onComplete();
|
|
}
|
|
}
|
|
}
|
|
|
|
public boolean offer(T t, T t2) {
|
|
throw new UnsupportedOperationException("Should not be called!");
|
|
}
|
|
}
|
|
|
|
static final class ScalarXMapObservable<T, R> extends Observable<R> {
|
|
final T a;
|
|
final Function<? super T, ? extends ObservableSource<? extends R>> b;
|
|
|
|
ScalarXMapObservable(T t, Function<? super T, ? extends ObservableSource<? extends R>> function) {
|
|
this.a = t;
|
|
this.b = function;
|
|
}
|
|
|
|
@Override // io.reactivex.Observable
|
|
public void subscribeActual(Observer<? super R> observer) {
|
|
try {
|
|
ObservableSource<? extends R> apply = this.b.apply(this.a);
|
|
ObjectHelper.a(apply, "The mapper returned a null ObservableSource");
|
|
ObservableSource<? extends R> observableSource = apply;
|
|
if (!(observableSource instanceof Callable)) {
|
|
observableSource.subscribe(observer);
|
|
return;
|
|
}
|
|
try {
|
|
Object call = ((Callable) observableSource).call();
|
|
if (call == null) {
|
|
EmptyDisposable.complete(observer);
|
|
return;
|
|
}
|
|
ScalarDisposable scalarDisposable = new ScalarDisposable(observer, call);
|
|
observer.onSubscribe(scalarDisposable);
|
|
scalarDisposable.run();
|
|
} catch (Throwable th) {
|
|
Exceptions.b(th);
|
|
EmptyDisposable.error(th, observer);
|
|
}
|
|
} catch (Throwable th2) {
|
|
EmptyDisposable.error(th2, observer);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static <T, R> boolean a(ObservableSource<T> observableSource, Observer<? super R> observer, Function<? super T, ? extends ObservableSource<? extends R>> function) {
|
|
if (!(observableSource instanceof Callable)) {
|
|
return false;
|
|
}
|
|
try {
|
|
Manifest manifest = (Object) ((Callable) observableSource).call();
|
|
if (manifest == null) {
|
|
EmptyDisposable.complete(observer);
|
|
return true;
|
|
}
|
|
try {
|
|
ObservableSource<? extends R> apply = function.apply(manifest);
|
|
ObjectHelper.a(apply, "The mapper returned a null ObservableSource");
|
|
ObservableSource<? extends R> observableSource2 = apply;
|
|
if (observableSource2 instanceof Callable) {
|
|
try {
|
|
Object call = ((Callable) observableSource2).call();
|
|
if (call == null) {
|
|
EmptyDisposable.complete(observer);
|
|
return true;
|
|
}
|
|
ScalarDisposable scalarDisposable = new ScalarDisposable(observer, call);
|
|
observer.onSubscribe(scalarDisposable);
|
|
scalarDisposable.run();
|
|
} catch (Throwable th) {
|
|
Exceptions.b(th);
|
|
EmptyDisposable.error(th, observer);
|
|
return true;
|
|
}
|
|
} else {
|
|
observableSource2.subscribe(observer);
|
|
}
|
|
return true;
|
|
} catch (Throwable th2) {
|
|
Exceptions.b(th2);
|
|
EmptyDisposable.error(th2, observer);
|
|
return true;
|
|
}
|
|
} catch (Throwable th3) {
|
|
Exceptions.b(th3);
|
|
EmptyDisposable.error(th3, observer);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public static <T, U> Observable<U> a(T t, Function<? super T, ? extends ObservableSource<? extends U>> function) {
|
|
return RxJavaPlugins.a(new ScalarXMapObservable(t, function));
|
|
}
|
|
}
|