Initial commit
This commit is contained in:
113
sources/io/reactivex/internal/disposables/DisposableHelper.java
Normal file
113
sources/io/reactivex/internal/disposables/DisposableHelper.java
Normal file
@@ -0,0 +1,113 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user