dev/mishka/gamblerplus/client/SessionManager.class 11.6 KB
- Class
- public final synchronized dev.mishka.gamblerplus.client.SessionManager
- Extends
- java.lang.Object
- Implements
- nothing
- Compiled for
- Java 21
Reconstructed source
// Reconstructed from bytecode by BackProbe (dev/mishka/gamblerplus/client/SessionManager.class, Java 21); this is not the original source.
package dev.mishka.gamblerplus.client;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.OpenOption;
import java.nio.file.Path;
import java.nio.file.attribute.FileAttribute;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import net.fabricmc.loader.api.FabricLoader;
public final class SessionManager {
public static final int MAX_HISTORY;
private static final Gson GSON;
private final Path file;
private final List past;
private int counter;
private boolean active;
private long currentStartedAt;
private String currentLabel;
private final LinkedHashMap incomingByPlayer;
public SessionManager() {
super();
this.past = new ArrayList();
this.counter = 0;
this.active = false;
this.currentStartedAt = 0L;
this.currentLabel = "";
this.incomingByPlayer = new LinkedHashMap();
this.file = FabricLoader.getInstance().getConfigDir().resolve("gambler-plus-sessions.json");
return;
}
public synchronized boolean hasActive() {
return this.active;
}
public synchronized long currentStartedAt() {
return this.currentStartedAt;
}
public synchronized String currentLabel() {
return this.currentLabel;
}
public synchronized int counter() {
return this.counter;
}
public synchronized List past() {
return Collections.unmodifiableList(new ArrayList(this.past));
}
public synchronized Map incomingByPlayer() {
return new LinkedHashMap(this.incomingByPlayer);
}
public synchronized void onIncoming(String arg0, long arg1) {
if (this.active) goto L8;
return;
L8:
this.incomingByPlayer.merge(arg0, Long.valueOf(arg1), indy.apply());
this.save();
return;
}
public synchronized void markPaid(String arg0) {
this.incomingByPlayer.remove(arg0);
this.save();
return;
}
public synchronized void clearAllRakeback() {
this.incomingByPlayer.clear();
this.save();
return;
}
public synchronized boolean deletePast(long arg0) {
int var3 = this.past.removeIf(indy.test(arg0));
if (var3 == 0) goto L24;
this.save();
L24:
return var3;
}
public synchronized void clearAllPast() {
this.past.clear();
this.save();
return;
}
public synchronized void startNew(Stats arg0) {
if (!this.active) goto L12;
this.archiveCurrent(arg0);
L12:
arg0.resetSession();
this.incomingByPlayer.clear();
this.counter = (this.counter + 1);
this.currentStartedAt = System.currentTimeMillis();
this.currentLabel = indy.makeConcatWithConstants(this.counter);
this.active = true;
this.save();
return;
}
public synchronized void endCurrent(Stats arg0) {
if (this.active) goto L8;
return;
L8:
this.archiveCurrent(arg0);
arg0.resetSession();
this.incomingByPlayer.clear();
this.active = false;
this.currentStartedAt = 0L;
this.currentLabel = "";
this.save();
return;
}
private void archiveCurrent(Stats arg0) {
var var2 = new Session(this.currentStartedAt, this.currentStartedAt, System.currentTimeMillis(), this.currentLabel, arg0.sessionIn(), arg0.sessionOut(), arg0.sessionInCount(), arg0.sessionOutCount(), arg0.longestLossStreak(), arg0.longestWinStreak(), new ArrayList(arg0.snapshot()));
this.past.add(0, var2);
L69:
if (this.past.size() <= 50) goto L107;
this.past.remove((this.past.size() - 1));
goto L69;
L107:
return;
}
public synchronized Session snapshotCurrent(Stats arg0) {
if (this.active) goto L9;
return null;
L9:
return new Session(this.currentStartedAt, this.currentStartedAt, System.currentTimeMillis(), this.currentLabel, arg0.sessionIn(), arg0.sessionOut(), arg0.sessionInCount(), arg0.sessionOutCount(), arg0.longestLossStreak(), arg0.longestWinStreak(), arg0.snapshot());
}
public synchronized void load() {
if (Files.exists(this.file, new LinkOption[0])) goto L15;
return;
L15:
var var1 = Files.newBufferedReader(this.file);
var var2 = JsonParser.parseReader(var1).getAsJsonObject();
if (!var2.has("counter")) goto L55;
this.counter = var2.get("counter").getAsInt();
L55:
if (!var2.has("current")) goto L252;
var var3 = var2.getAsJsonObject("current");
var stack0 = this;
if (!var3.has("active")) goto L101;
if (!var3.get("active").getAsBoolean()) goto L101;
var stack1 = 1;
goto L102;
L101:
stack1 = 0;
L102:
stack0.active = stack1;
stack0 = this;
if (!var3.has("startedAt")) goto L129;
stack1 = var3.get("startedAt").getAsLong();
goto L130;
L129:
stack1 = 0L;
L130:
stack0.currentStartedAt = stack1;
stack0 = this;
if (!var3.has("label")) goto L157;
stack1 = var3.get("label").getAsString();
goto L159;
L157:
stack1 = "";
L159:
stack0.currentLabel = stack1;
if (!var3.has("incomingByPlayer")) goto L252;
var var4 = var3.getAsJsonObject("incomingByPlayer");
var var5 = var4.entrySet().iterator();
L193:
if (!var5.hasNext()) goto L252;
var var6 = ((Map.Entry) var5.next());
this.incomingByPlayer.put(((String) var6.getKey()), Long.valueOf(((JsonElement) var6.getValue()).getAsLong()));
goto L193;
L252:
if (!var2.has("sessions")) goto L548;
var3 = var2.getAsJsonArray("sessions");
var4 = 0;
L273:
if (var4 >= var3.size()) goto L548;
var5 = var3.get(var4).getAsJsonObject();
var6 = new ArrayList();
if (!var5.has("payments")) goto L413;
var var7 = var5.getAsJsonArray("payments");
int var8 = 0;
L326:
if (var8 >= var7.size()) goto L413;
var var9 = var7.get(var8).getAsJsonObject();
var6.add(new PaymentEvent(var9.get("t").getAsLong(), var9.get("u").getAsString(), var9.get("a").getAsLong(), var9.get("i").getAsBoolean()));
var8 += 1;
goto L326;
L413:
this.past.add(new Session(var5.get("id").getAsLong(), var5.get("startedAt").getAsLong(), var5.get("endedAt").getAsLong(), var5.get("label").getAsString(), var5.get("in").getAsLong(), var5.get("out").getAsLong(), var5.get("inCount").getAsInt(), var5.get("outCount").getAsInt(), var5.get("longestLossStreak").getAsInt(), var5.get("longestWinStreak").getAsInt(), var6));
var4 += 1;
goto L273;
L548:
if (var1 == null) goto L579;
var1.close();
goto L579;
var2 = caughtException;
if (var1 == null) goto L577;
var1.close();
goto L577;
var3 = caughtException;
var2.addSuppressed(var3);
L577:
throw var2;
L579:
goto L583;
var1 = caughtException;
L583:
return;
}
public synchronized void save() {
var var1 = new JsonObject();
var1.addProperty("counter", Integer.valueOf(this.counter));
var var2 = new JsonObject();
var2.addProperty("active", Boolean.valueOf(this.active));
var2.addProperty("startedAt", Long.valueOf(this.currentStartedAt));
var2.addProperty("label", this.currentLabel);
var var3 = new JsonObject();
var var4 = this.incomingByPlayer.entrySet().iterator();
L91:
if (!var4.hasNext()) goto L140;
var var5 = ((Map.Entry) var4.next());
var3.addProperty(((String) var5.getKey()), ((Number) var5.getValue()));
goto L91;
L140:
var2.add("incomingByPlayer", var3);
var1.add("current", var2);
var4 = new JsonArray();
var5 = this.past.iterator();
L176:
if (!var5.hasNext()) goto L507;
var var6 = ((Session) var5.next());
var var7 = new JsonObject();
var7.addProperty("id", Long.valueOf(var6.id()));
var7.addProperty("startedAt", Long.valueOf(var6.startedAt()));
var7.addProperty("endedAt", Long.valueOf(var6.endedAt()));
var7.addProperty("label", var6.label());
var7.addProperty("in", Long.valueOf(var6.in()));
var7.addProperty("out", Long.valueOf(var6.out()));
var7.addProperty("inCount", Integer.valueOf(var6.inCount()));
var7.addProperty("outCount", Integer.valueOf(var6.outCount()));
var7.addProperty("longestLossStreak", Integer.valueOf(var6.longestLossStreak()));
var7.addProperty("longestWinStreak", Integer.valueOf(var6.longestWinStreak()));
var var8 = new JsonArray();
var var9 = var6.payments().iterator();
L385:
if (!var9.hasNext()) goto L487;
var var10 = ((PaymentEvent) var9.next());
var var11 = new JsonObject();
var11.addProperty("t", Long.valueOf(var10.timestampMs()));
var11.addProperty("u", var10.player());
var11.addProperty("a", Long.valueOf(var10.amount()));
var11.addProperty("i", Boolean.valueOf(var10.incoming()));
var8.add(var11);
goto L385;
L487:
var7.add("payments", var8);
var4.add(var7);
goto L176;
L507:
var1.add("sessions", var4);
Files.createDirectories(this.file.getParent(), new FileAttribute[0]);
var5 = Files.newBufferedWriter(this.file, new OpenOption[0]);
SessionManager.GSON.toJson(var1, var5);
if (var5 == null) goto L595;
var5.close();
goto L595;
var6 = caughtException;
if (var5 == null) goto L592;
var5.close();
goto L592;
var7 = caughtException;
var6.addSuppressed(var7);
L592:
throw var6;
L595:
goto L600;
var5 = caughtException;
L600:
return;
}
private static boolean lambda$deletePast$0(long arg0, Session arg1) {
if (Long.compare(arg1.id(), arg0) != 0) goto L13;
var stack0 = 1;
goto L14;
L13:
stack0 = 0;
L14:
return stack0;
}
static {
SessionManager.GSON = new GsonBuilder().setPrettyPrinting().create();
return;
}
}
Methods declared
public void <init>() public synchronized boolean hasActive() public synchronized long currentStartedAt() public synchronized java.lang.String currentLabel() public synchronized int counter() public synchronized java.util.List past() public synchronized java.util.Map incomingByPlayer() public synchronized void onIncoming(java.lang.String, long) public synchronized void markPaid(java.lang.String) public synchronized void clearAllRakeback() public synchronized boolean deletePast(long) public synchronized void clearAllPast() public synchronized void startNew(dev.mishka.gamblerplus.client.Stats) public synchronized void endCurrent(dev.mishka.gamblerplus.client.Stats) private void archiveCurrent(dev.mishka.gamblerplus.client.Stats) public synchronized dev.mishka.gamblerplus.client.Session snapshotCurrent(dev.mishka.gamblerplus.client.Stats) public synchronized void load() public synchronized void save() private static synthetic boolean lambda$deletePast$0(long, dev.mishka.gamblerplus.client.Session) static void <clinit>()
Fields
public static final int MAX_HISTORY private static final com.google.gson.Gson GSON private final java.nio.file.Path file private final java.util.List past private int counter private boolean active private long currentStartedAt private java.lang.String currentLabel private final java.util.LinkedHashMap incomingByPlayer
Calls out to
com.google.gson.Gson.toJson(com.google.gson.JsonElement, java.lang.Appendable) com.google.gson.GsonBuilder.<init>() com.google.gson.GsonBuilder.create() : com.google.gson.Gson com.google.gson.GsonBuilder.setPrettyPrinting() : com.google.gson.GsonBuilder com.google.gson.JsonArray.<init>() com.google.gson.JsonArray.add(com.google.gson.JsonElement) com.google.gson.JsonArray.get(int) : com.google.gson.JsonElement com.google.gson.JsonArray.size() : int com.google.gson.JsonElement.getAsBoolean() : boolean com.google.gson.JsonElement.getAsInt() : int com.google.gson.JsonElement.getAsJsonObject() : com.google.gson.JsonObject com.google.gson.JsonElement.getAsLong() : long com.google.gson.JsonElement.getAsString() : java.lang.String com.google.gson.JsonObject.<init>() com.google.gson.JsonObject.add(java.lang.String, com.google.gson.JsonElement) com.google.gson.JsonObject.addProperty(java.lang.String, java.lang.Number) com.google.gson.JsonObject.addProperty(java.lang.String, java.lang.Boolean) com.google.gson.JsonObject.addProperty(java.lang.String, java.lang.String) com.google.gson.JsonObject.entrySet() : java.util.Set com.google.gson.JsonObject.get(java.lang.String) : com.google.gson.JsonElement com.google.gson.JsonObject.getAsJsonArray(java.lang.String) : com.google.gson.JsonArray com.google.gson.JsonObject.getAsJsonObject(java.lang.String) : com.google.gson.JsonObject com.google.gson.JsonObject.has(java.lang.String) : boolean com.google.gson.JsonParser.parseReader(java.io.Reader) : com.google.gson.JsonElement dev.mishka.gamblerplus.client.PaymentEvent.<init>(long, java.lang.String, long, boolean) dev.mishka.gamblerplus.client.PaymentEvent.amount() : long dev.mishka.gamblerplus.client.PaymentEvent.incoming() : boolean dev.mishka.gamblerplus.client.PaymentEvent.player() : java.lang.String dev.mishka.gamblerplus.client.PaymentEvent.timestampMs() : long dev.mishka.gamblerplus.client.Session.<init>(long, long, long, java.lang.String, long, long, int, int, int, int, java.util.List) dev.mishka.gamblerplus.client.Session.endedAt() : long dev.mishka.gamblerplus.client.Session.id() : long dev.mishka.gamblerplus.client.Session.in() : long dev.mishka.gamblerplus.client.Session.inCount() : int dev.mishka.gamblerplus.client.Session.label() : java.lang.String dev.mishka.gamblerplus.client.Session.longestLossStreak() : int dev.mishka.gamblerplus.client.Session.longestWinStreak() : int dev.mishka.gamblerplus.client.Session.out() : long dev.mishka.gamblerplus.client.Session.outCount() : int dev.mishka.gamblerplus.client.Session.payments() : java.util.List dev.mishka.gamblerplus.client.Session.startedAt() : long com.google.gson.Gson dev.mishka.gamblerplus.client.SessionManager.GSON boolean dev.mishka.gamblerplus.client.SessionManager.active dev.mishka.gamblerplus.client.SessionManager.archiveCurrent(dev.mishka.gamblerplus.client.Stats) int dev.mishka.gamblerplus.client.SessionManager.counter java.lang.String dev.mishka.gamblerplus.client.SessionManager.currentLabel long dev.mishka.gamblerplus.client.SessionManager.currentStartedAt java.nio.file.Path dev.mishka.gamblerplus.client.SessionManager.file java.util.LinkedHashMap dev.mishka.gamblerplus.client.SessionManager.incomingByPlayer dev.mishka.gamblerplus.client.SessionManager.lambda$deletePast$0(long, dev.mishka.gamblerplus.client.Session) : boolean java.util.List dev.mishka.gamblerplus.client.SessionManager.past dev.mishka.gamblerplus.client.SessionManager.save() dev.mishka.gamblerplus.client.Stats.longestLossStreak() : int dev.mishka.gamblerplus.client.Stats.longestWinStreak() : int dev.mishka.gamblerplus.client.Stats.resetSession() dev.mishka.gamblerplus.client.Stats.sessionIn() : long dev.mishka.gamblerplus.client.Stats.sessionInCount() : int dev.mishka.gamblerplus.client.Stats.sessionOut() : long dev.mishka.gamblerplus.client.Stats.sessionOutCount() : int dev.mishka.gamblerplus.client.Stats.snapshot() : java.util.List java.io.Reader.close() java.io.Writer.close() java.lang.Boolean.valueOf(boolean) : java.lang.Boolean java.lang.Integer.valueOf(int) : java.lang.Integer java.lang.Long.sum(long, long) : long java.lang.Long.valueOf(long) : java.lang.Long java.lang.Object.<init>() java.lang.System.currentTimeMillis() : long java.lang.Throwable.addSuppressed(java.lang.Throwable) java.lang.invoke.LambdaMetafactory.metafactory(java.lang.invoke.MethodHandles$Lookup, java.lang.String, java.lang.invoke.MethodType, java.lang.invoke.MethodType, java.lang.invoke.MethodHandle, java.lang.invoke.MethodType) : java.lang.invoke.CallSite java.lang.invoke.StringConcatFactory.makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup, java.lang.String, java.lang.invoke.MethodType, java.lang.String, java.lang.Object[]) : java.lang.invoke.CallSite java.nio.file.Files.createDirectories(java.nio.file.Path, java.nio.file.attribute.FileAttribute[]) : java.nio.file.Path java.nio.file.Files.exists(java.nio.file.Path, java.nio.file.LinkOption[]) : boolean java.nio.file.Files.newBufferedReader(java.nio.file.Path) : java.io.BufferedReader java.nio.file.Files.newBufferedWriter(java.nio.file.Path, java.nio.file.OpenOption[]) : java.io.BufferedWriter java.nio.file.Path.getParent() : java.nio.file.Path java.nio.file.Path.resolve(java.lang.String) : java.nio.file.Path java.util.ArrayList.<init>() java.util.ArrayList.<init>(java.util.Collection) java.util.Collections.unmodifiableList(java.util.List) : java.util.List java.util.Iterator.hasNext() : boolean java.util.Iterator.next() : java.lang.Object java.util.LinkedHashMap.<init>() java.util.LinkedHashMap.<init>(java.util.Map) java.util.LinkedHashMap.clear() java.util.LinkedHashMap.entrySet() : java.util.Set java.util.LinkedHashMap.merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction) : java.lang.Object java.util.LinkedHashMap.put(java.lang.Object, java.lang.Object) : java.lang.Object java.util.LinkedHashMap.remove(java.lang.Object) : java.lang.Object java.util.List.add(int, java.lang.Object) java.util.List.add(java.lang.Object) : boolean java.util.List.clear() java.util.List.iterator() : java.util.Iterator java.util.List.remove(int) : java.lang.Object java.util.List.removeIf(java.util.function.Predicate) : boolean java.util.List.size() : int java.util.Map$Entry.getKey() : java.lang.Object java.util.Map$Entry.getValue() : java.lang.Object java.util.Set.iterator() : java.util.Iterator net.fabricmc.loader.api.FabricLoader.getConfigDir() : java.nio.file.Path net.fabricmc.loader.api.FabricLoader.getInstance() : net.fabricmc.loader.api.FabricLoader
Text compiled into the class
gambler-plus-sessions.json Session # counter current active startedAt label incomingByPlayer sessions payments t u a i id endedAt in out inCount outCount longestLossStreak longestWinStreak