80 lines
2.2 KiB
Java
80 lines
2.2 KiB
Java
package rx.internal.util;
|
|
|
|
import c.q.a.k.a;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
import rx.Subscription;
|
|
public final class SubscriptionList implements Subscription {
|
|
public List<Subscription> i;
|
|
public volatile boolean j;
|
|
|
|
public SubscriptionList() {
|
|
}
|
|
|
|
public SubscriptionList(Subscription subscription) {
|
|
LinkedList linkedList = new LinkedList();
|
|
this.i = linkedList;
|
|
linkedList.add(subscription);
|
|
}
|
|
|
|
public SubscriptionList(Subscription... subscriptionArr) {
|
|
this.i = new LinkedList(Arrays.asList(subscriptionArr));
|
|
}
|
|
|
|
public void a(Subscription subscription) {
|
|
if (!subscription.isUnsubscribed()) {
|
|
if (!this.j) {
|
|
synchronized (this) {
|
|
if (!this.j) {
|
|
List list = this.i;
|
|
if (list == null) {
|
|
list = new LinkedList();
|
|
this.i = list;
|
|
}
|
|
list.add(subscription);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
subscription.unsubscribe();
|
|
}
|
|
}
|
|
|
|
@Override // rx.Subscription
|
|
public boolean isUnsubscribed() {
|
|
return this.j;
|
|
}
|
|
|
|
@Override // rx.Subscription
|
|
public void unsubscribe() {
|
|
List<Subscription> list;
|
|
ArrayList arrayList;
|
|
if (!this.j) {
|
|
synchronized (this) {
|
|
if (!this.j) {
|
|
this.j = true;
|
|
list = this.i;
|
|
arrayList = null;
|
|
this.i = null;
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
if (list != null) {
|
|
for (Subscription subscription : list) {
|
|
try {
|
|
subscription.unsubscribe();
|
|
} catch (Throwable th) {
|
|
if (arrayList == null) {
|
|
arrayList = new ArrayList();
|
|
}
|
|
arrayList.add(th);
|
|
}
|
|
}
|
|
a.Z(arrayList);
|
|
}
|
|
}
|
|
}
|
|
}
|