114 lines
3.5 KiB
Java
114 lines
3.5 KiB
Java
package io.reactivex.internal.disposables;
|
|
|
|
import io.reactivex.disposables.Disposable;
|
|
import io.reactivex.exceptions.ProtocolViolationException;
|
|
import io.reactivex.internal.functions.ObjectHelper;
|
|
import io.reactivex.plugins.RxJavaPlugins;
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public enum DisposableHelper implements Disposable {
|
|
DISPOSED;
|
|
|
|
public static boolean dispose(AtomicReference<Disposable> atomicReference) {
|
|
Disposable andSet;
|
|
Disposable disposable = atomicReference.get();
|
|
DisposableHelper disposableHelper = DISPOSED;
|
|
if (disposable == disposableHelper || (andSet = atomicReference.getAndSet(disposableHelper)) == disposableHelper) {
|
|
return false;
|
|
}
|
|
if (andSet == null) {
|
|
return true;
|
|
}
|
|
andSet.dispose();
|
|
return true;
|
|
}
|
|
|
|
public static boolean isDisposed(Disposable disposable) {
|
|
return disposable == DISPOSED;
|
|
}
|
|
|
|
public static boolean replace(AtomicReference<Disposable> atomicReference, Disposable disposable) {
|
|
Disposable disposable2;
|
|
do {
|
|
disposable2 = atomicReference.get();
|
|
if (disposable2 == DISPOSED) {
|
|
if (disposable == null) {
|
|
return false;
|
|
}
|
|
disposable.dispose();
|
|
return false;
|
|
}
|
|
} while (!atomicReference.compareAndSet(disposable2, disposable));
|
|
return true;
|
|
}
|
|
|
|
public static void reportDisposableSet() {
|
|
RxJavaPlugins.b(new ProtocolViolationException("Disposable already set!"));
|
|
}
|
|
|
|
public static boolean set(AtomicReference<Disposable> atomicReference, Disposable disposable) {
|
|
Disposable disposable2;
|
|
do {
|
|
disposable2 = atomicReference.get();
|
|
if (disposable2 == DISPOSED) {
|
|
if (disposable == null) {
|
|
return false;
|
|
}
|
|
disposable.dispose();
|
|
return false;
|
|
}
|
|
} while (!atomicReference.compareAndSet(disposable2, disposable));
|
|
if (disposable2 == null) {
|
|
return true;
|
|
}
|
|
disposable2.dispose();
|
|
return true;
|
|
}
|
|
|
|
public static boolean setOnce(AtomicReference<Disposable> atomicReference, Disposable disposable) {
|
|
ObjectHelper.a(disposable, "d is null");
|
|
if (atomicReference.compareAndSet(null, disposable)) {
|
|
return true;
|
|
}
|
|
disposable.dispose();
|
|
if (atomicReference.get() == DISPOSED) {
|
|
return false;
|
|
}
|
|
reportDisposableSet();
|
|
return false;
|
|
}
|
|
|
|
public static boolean trySet(AtomicReference<Disposable> atomicReference, Disposable disposable) {
|
|
if (atomicReference.compareAndSet(null, disposable)) {
|
|
return true;
|
|
}
|
|
if (atomicReference.get() != DISPOSED) {
|
|
return false;
|
|
}
|
|
disposable.dispose();
|
|
return false;
|
|
}
|
|
|
|
public static boolean validate(Disposable disposable, Disposable disposable2) {
|
|
if (disposable2 == null) {
|
|
RxJavaPlugins.b(new NullPointerException("next is null"));
|
|
return false;
|
|
}
|
|
if (disposable == null) {
|
|
return true;
|
|
}
|
|
disposable2.dispose();
|
|
reportDisposableSet();
|
|
return false;
|
|
}
|
|
|
|
@Override // io.reactivex.disposables.Disposable
|
|
public void dispose() {
|
|
}
|
|
|
|
public boolean isDisposed() {
|
|
return true;
|
|
}
|
|
}
|