301 lines
12 KiB
Java
301 lines
12 KiB
Java
package com.discord.stores.updates;
|
|
|
|
import c.d.b.a.a;
|
|
import com.discord.app.AppLog;
|
|
import com.discord.utilities.logging.Logger;
|
|
import d0.o;
|
|
import d0.t.h0;
|
|
import d0.t.u;
|
|
import d0.z.d.m;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import kotlin.Pair;
|
|
import kotlin.Unit;
|
|
import kotlin.jvm.functions.Function0;
|
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
|
import kotlin.jvm.internal.Ref$ObjectRef;
|
|
import rx.Emitter;
|
|
import rx.Observable;
|
|
/* compiled from: ObservationDeck.kt */
|
|
public final class ObservationDeck {
|
|
public static final Companion Companion = new Companion(null);
|
|
private static final String LOG_CATEGORY = "ObservationDeck";
|
|
private static final Function0<Unit> ON_UPDATE_EMPTY = ObservationDeck$Companion$ON_UPDATE_EMPTY$1.INSTANCE;
|
|
private final LogLevel logLevel;
|
|
private final Logger logger;
|
|
private List<Observer> observers;
|
|
|
|
/* compiled from: ObservationDeck.kt */
|
|
public static final class Companion {
|
|
private Companion() {
|
|
}
|
|
|
|
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
|
|
this();
|
|
}
|
|
}
|
|
|
|
/* compiled from: ObservationDeck.kt */
|
|
public enum LogLevel {
|
|
NONE,
|
|
ERROR,
|
|
VERBOSE
|
|
}
|
|
|
|
/* compiled from: ObservationDeck.kt */
|
|
public static abstract class Observer {
|
|
private boolean isStale;
|
|
|
|
public abstract String getName();
|
|
|
|
public abstract Set<UpdateSource> getObservingUpdates();
|
|
|
|
public abstract Function0<Unit> getOnUpdate();
|
|
|
|
public final boolean isStale() {
|
|
return this.isStale;
|
|
}
|
|
|
|
public final void markStale() {
|
|
this.isStale = true;
|
|
setOnUpdate(ObservationDeck.access$getON_UPDATE_EMPTY$cp());
|
|
}
|
|
|
|
public abstract void setOnUpdate(Function0<Unit> function0);
|
|
|
|
public final String toDebugLogString() {
|
|
StringBuilder sb = new StringBuilder();
|
|
StringBuilder K = a.K("Observer name: ");
|
|
String name = getName();
|
|
if (name == null) {
|
|
name = "Unknown";
|
|
}
|
|
K.append(name);
|
|
K.append('\n');
|
|
sb.append(K.toString());
|
|
sb.append(u.joinToString$default(getObservingUpdates(), ", ", null, null, 0, null, null, 62, null));
|
|
String sb2 = sb.toString();
|
|
m.checkNotNullExpressionValue(sb2, "stringBuilder.toString()");
|
|
return sb2;
|
|
}
|
|
}
|
|
|
|
/* compiled from: ObservationDeck.kt */
|
|
public interface UpdateSource {
|
|
}
|
|
|
|
public ObservationDeck() {
|
|
this(null, null, 3, null);
|
|
}
|
|
|
|
public ObservationDeck(Logger logger, LogLevel logLevel) {
|
|
m.checkNotNullParameter(logger, "logger");
|
|
m.checkNotNullParameter(logLevel, "logLevel");
|
|
this.logger = logger;
|
|
this.logLevel = logLevel;
|
|
this.observers = new ArrayList();
|
|
}
|
|
|
|
/* JADX INFO: this call moved to the top of the method (can break code semantics) */
|
|
public /* synthetic */ ObservationDeck(Logger logger, LogLevel logLevel, int i, DefaultConstructorMarker defaultConstructorMarker) {
|
|
this((i & 1) != 0 ? AppLog.g : logger, (i & 2) != 0 ? LogLevel.NONE : logLevel);
|
|
}
|
|
|
|
public static final /* synthetic */ Function0 access$getON_UPDATE_EMPTY$cp() {
|
|
return ON_UPDATE_EMPTY;
|
|
}
|
|
|
|
public static /* synthetic */ Observer connect$default(ObservationDeck observationDeck, Observer observer, boolean z2, int i, Object obj) {
|
|
if ((i & 2) != 0) {
|
|
z2 = true;
|
|
}
|
|
return observationDeck.connect(observer, z2);
|
|
}
|
|
|
|
public static /* synthetic */ Observer connect$default(ObservationDeck observationDeck, UpdateSource[] updateSourceArr, boolean z2, String str, Function0 function0, int i, Object obj) {
|
|
if ((i & 2) != 0) {
|
|
z2 = true;
|
|
}
|
|
if ((i & 4) != 0) {
|
|
str = null;
|
|
}
|
|
return observationDeck.connect(updateSourceArr, z2, str, function0);
|
|
}
|
|
|
|
public static /* synthetic */ Observable connectRx$default(ObservationDeck observationDeck, UpdateSource[] updateSourceArr, boolean z2, Emitter.BackpressureMode backpressureMode, String str, int i, Object obj) {
|
|
if ((i & 2) != 0) {
|
|
z2 = true;
|
|
}
|
|
if ((i & 4) != 0) {
|
|
backpressureMode = Emitter.BackpressureMode.LATEST;
|
|
}
|
|
if ((i & 8) != 0) {
|
|
str = null;
|
|
}
|
|
return observationDeck.connectRx(updateSourceArr, z2, backpressureMode, str);
|
|
}
|
|
|
|
public static /* synthetic */ Observable connectRx$default(ObservationDeck observationDeck, UpdateSource[] updateSourceArr, boolean z2, Emitter.BackpressureMode backpressureMode, String str, Function0 function0, int i, Object obj) {
|
|
boolean z3 = (i & 2) != 0 ? true : z2;
|
|
if ((i & 4) != 0) {
|
|
backpressureMode = Emitter.BackpressureMode.LATEST;
|
|
}
|
|
if ((i & 8) != 0) {
|
|
str = null;
|
|
}
|
|
return observationDeck.connectRx(updateSourceArr, z3, backpressureMode, str, function0);
|
|
}
|
|
|
|
private final void logBreadcrumb(String str) {
|
|
if (this.logLevel == LogLevel.VERBOSE) {
|
|
this.logger.recordBreadcrumb(str, "ObservationDeck");
|
|
}
|
|
}
|
|
|
|
/* JADX DEBUG: Can't convert new array creation: APUT found in different block: 0x007b: APUT
|
|
(r2v1 kotlin.Pair[])
|
|
(1 ??[boolean, int, float, short, byte, char])
|
|
(wrap: kotlin.Pair : 0x0077: INVOKE (r3v6 kotlin.Pair) =
|
|
("Observers")
|
|
(wrap: java.lang.String : 0x0071: INVOKE (r3v5 java.lang.String) =
|
|
(r5v1 java.util.ArrayList)
|
|
("
|
|
")
|
|
(null java.lang.CharSequence)
|
|
(null java.lang.CharSequence)
|
|
(0 int)
|
|
(null java.lang.CharSequence)
|
|
(wrap: com.discord.stores.updates.ObservationDeck$logNotifyError$2 : 0x006a: SGET (r11v1 com.discord.stores.updates.ObservationDeck$logNotifyError$2) = com.discord.stores.updates.ObservationDeck$logNotifyError$2.INSTANCE com.discord.stores.updates.ObservationDeck$logNotifyError$2)
|
|
(30 int)
|
|
(null java.lang.Object)
|
|
type: STATIC call: d0.t.u.joinToString$default(java.lang.Iterable, java.lang.CharSequence, java.lang.CharSequence, java.lang.CharSequence, int, java.lang.CharSequence, kotlin.jvm.functions.Function1, int, java.lang.Object):java.lang.String)
|
|
type: STATIC call: d0.o.to(java.lang.Object, java.lang.Object):kotlin.Pair)
|
|
*/
|
|
private final void logNotifyError(Throwable th, Set<? extends UpdateSource> set) {
|
|
Logger logger = this.logger;
|
|
Pair[] pairArr = new Pair[2];
|
|
pairArr[0] = o.to("Update Sources", u.joinToString$default(set, ", ", null, null, 0, null, null, 62, null));
|
|
List<Observer> list = this.observers;
|
|
ArrayList arrayList = new ArrayList();
|
|
Iterator<T> it = list.iterator();
|
|
while (true) {
|
|
boolean z2 = true;
|
|
if (it.hasNext()) {
|
|
Object next = it.next();
|
|
Observer observer = (Observer) next;
|
|
if (!(set instanceof Collection) || !set.isEmpty()) {
|
|
Iterator<T> it2 = set.iterator();
|
|
while (true) {
|
|
if (!it2.hasNext()) {
|
|
break;
|
|
}
|
|
if (observer.getObservingUpdates().contains((UpdateSource) it2.next())) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
z2 = false;
|
|
if (z2) {
|
|
arrayList.add(next);
|
|
}
|
|
} else {
|
|
pairArr[1] = o.to("Observers", u.joinToString$default(arrayList, "\n", null, null, 0, null, ObservationDeck$logNotifyError$2.INSTANCE, 30, null));
|
|
logger.e("ObservationDeck notify error", th, h0.mapOf(pairArr));
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
public final synchronized Observer connect(Observer observer, boolean z2) {
|
|
m.checkNotNullParameter(observer, "observer");
|
|
logBreadcrumb("connect START. observer: " + observer.getName());
|
|
this.observers.add(observer);
|
|
if (z2) {
|
|
observer.getOnUpdate().mo1invoke();
|
|
}
|
|
logBreadcrumb("connect END. observer: " + observer.getName() + " -- isStale: " + observer.isStale());
|
|
return observer;
|
|
}
|
|
|
|
public final synchronized Observer connect(UpdateSource[] updateSourceArr, boolean z2, String str, Function0<Unit> function0) {
|
|
ObservationDeck$connect$observer$1 observationDeck$connect$observer$1;
|
|
m.checkNotNullParameter(updateSourceArr, "updateSources");
|
|
m.checkNotNullParameter(function0, "onUpdate");
|
|
observationDeck$connect$observer$1 = new ObservationDeck$connect$observer$1(updateSourceArr, function0, str);
|
|
connect(observationDeck$connect$observer$1, z2);
|
|
return observationDeck$connect$observer$1;
|
|
}
|
|
|
|
public final synchronized Observable<Unit> connectRx(UpdateSource[] updateSourceArr, boolean z2, Emitter.BackpressureMode backpressureMode, String str) {
|
|
Observable<Unit> v;
|
|
m.checkNotNullParameter(updateSourceArr, "updateSources");
|
|
m.checkNotNullParameter(backpressureMode, "backpressureMode");
|
|
Ref$ObjectRef ref$ObjectRef = new Ref$ObjectRef();
|
|
ref$ObjectRef.element = null;
|
|
v = Observable.n(new ObservationDeck$connectRx$1(this, ref$ObjectRef, z2, str, updateSourceArr), backpressureMode).v(new ObservationDeck$connectRx$2(this, ref$ObjectRef));
|
|
m.checkNotNullExpressionValue(v, "Observable.create<Unit>(…rver?.let(::disconnect) }");
|
|
return v;
|
|
}
|
|
|
|
public final synchronized <T> Observable<T> connectRx(UpdateSource[] updateSourceArr, boolean z2, Emitter.BackpressureMode backpressureMode, String str, Function0<? extends T> function0) {
|
|
Observable<T> observable;
|
|
m.checkNotNullParameter(updateSourceArr, "updateSources");
|
|
m.checkNotNullParameter(backpressureMode, "backpressureMode");
|
|
m.checkNotNullParameter(function0, "generator");
|
|
observable = (Observable<T>) connectRx((UpdateSource[]) Arrays.copyOf(updateSourceArr, updateSourceArr.length), z2, backpressureMode, str).F(new ObservationDeck$connectRx$3(function0));
|
|
m.checkNotNullExpressionValue(observable, "connectRx(\n *upda… ).map { generator() }");
|
|
return observable;
|
|
}
|
|
|
|
public final synchronized void disconnect(Observer observer) {
|
|
m.checkNotNullParameter(observer, "observer");
|
|
logBreadcrumb("disconnect START. observer: " + observer.getName());
|
|
observer.markStale();
|
|
logBreadcrumb("disconnect END. observer: " + observer.getName());
|
|
}
|
|
|
|
public final synchronized void notify(Set<? extends UpdateSource> set) {
|
|
String str;
|
|
boolean z2;
|
|
m.checkNotNullParameter(set, "updates");
|
|
logBreadcrumb("notify START");
|
|
int i = 0;
|
|
while (i < this.observers.size()) {
|
|
try {
|
|
Observer observer = this.observers.get(i);
|
|
if (observer.isStale()) {
|
|
logBreadcrumb("removing observer: " + observer.getName());
|
|
this.observers.remove(i);
|
|
i += -1;
|
|
} else {
|
|
if (!(set instanceof Collection) || !set.isEmpty()) {
|
|
Iterator<T> it = set.iterator();
|
|
while (true) {
|
|
if (!it.hasNext()) {
|
|
break;
|
|
}
|
|
if (observer.getObservingUpdates().contains((UpdateSource) it.next())) {
|
|
z2 = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
z2 = false;
|
|
if (z2) {
|
|
observer.getOnUpdate().mo1invoke();
|
|
}
|
|
}
|
|
i++;
|
|
} catch (Throwable th) {
|
|
logBreadcrumb("notify END");
|
|
throw th;
|
|
}
|
|
}
|
|
str = "notify END";
|
|
logBreadcrumb(str);
|
|
}
|
|
}
|