alexandroid/decompiled/jadx/sources/io/reactivex/rxjava3/internal/queue/MpscLinkedQueue.java
KaKi87 a47fad5135 📦 Add decompiled Alexa 2.2.730155.0 (jadx, apktool, Hermes strings)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:04:16 +01:00

127 lines
3.9 KiB
Java

package io.reactivex.rxjava3.internal.queue;
import io.reactivex.rxjava3.annotations.Nullable;
import io.reactivex.rxjava3.operators.SimplePlainQueue;
import java.util.concurrent.atomic.AtomicReference;
import rx.Single$$ExternalSyntheticBUOutline0;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
/* loaded from: classes10.dex */
public final class MpscLinkedQueue<T> implements SimplePlainQueue<T> {
private final AtomicReference<LinkedQueueNode<T>> producerNode = new AtomicReference<>();
private final AtomicReference<LinkedQueueNode<T>> consumerNode = new AtomicReference<>();
public MpscLinkedQueue() {
LinkedQueueNode<T> linkedQueueNode = new LinkedQueueNode<>();
spConsumerNode(linkedQueueNode);
xchgProducerNode(linkedQueueNode);
}
@Override // io.reactivex.rxjava3.operators.SimpleQueue
public void clear() {
while (poll() != null && !isEmpty()) {
}
}
@Override // io.reactivex.rxjava3.operators.SimpleQueue
public boolean isEmpty() {
return lvConsumerNode() == lvProducerNode();
}
public LinkedQueueNode<T> lpConsumerNode() {
return this.consumerNode.get();
}
public LinkedQueueNode<T> lvConsumerNode() {
return this.consumerNode.get();
}
public LinkedQueueNode<T> lvProducerNode() {
return this.producerNode.get();
}
@Override // io.reactivex.rxjava3.operators.SimpleQueue
public boolean offer(T t) {
if (t == null) {
Single$$ExternalSyntheticBUOutline0.m$1("Null is not a valid element");
return false;
}
LinkedQueueNode<T> linkedQueueNode = new LinkedQueueNode<>(t);
xchgProducerNode(linkedQueueNode).soNext(linkedQueueNode);
return true;
}
@Override // io.reactivex.rxjava3.operators.SimplePlainQueue, io.reactivex.rxjava3.operators.SimpleQueue
@Nullable
public T poll() {
LinkedQueueNode<T> lvNext;
LinkedQueueNode<T> lpConsumerNode = lpConsumerNode();
LinkedQueueNode<T> lvNext2 = lpConsumerNode.lvNext();
if (lvNext2 != null) {
T andNullValue = lvNext2.getAndNullValue();
spConsumerNode(lvNext2);
lpConsumerNode.soNext(null);
return andNullValue;
}
if (lpConsumerNode == lvProducerNode()) {
return null;
}
do {
lvNext = lpConsumerNode.lvNext();
} while (lvNext == null);
T andNullValue2 = lvNext.getAndNullValue();
spConsumerNode(lvNext);
lpConsumerNode.soNext(null);
return andNullValue2;
}
public void spConsumerNode(LinkedQueueNode<T> linkedQueueNode) {
this.consumerNode.lazySet(linkedQueueNode);
}
public LinkedQueueNode<T> xchgProducerNode(LinkedQueueNode<T> linkedQueueNode) {
return this.producerNode.getAndSet(linkedQueueNode);
}
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
public static final class LinkedQueueNode<E> extends AtomicReference<LinkedQueueNode<E>> {
private static final long serialVersionUID = 2404266111789071508L;
private E value;
public LinkedQueueNode(E e) {
spValue(e);
}
public E getAndNullValue() {
E lpValue = lpValue();
spValue(null);
return lpValue;
}
public E lpValue() {
return this.value;
}
public LinkedQueueNode<E> lvNext() {
return get();
}
public void soNext(LinkedQueueNode<E> linkedQueueNode) {
lazySet(linkedQueueNode);
}
public void spValue(E e) {
this.value = e;
}
public LinkedQueueNode() {
}
}
@Override // io.reactivex.rxjava3.operators.SimpleQueue
public boolean offer(T t, T t2) {
offer(t);
offer(t2);
return true;
}
}