Badge images report the certificate status at the moment they are fetched
BackProbeIntegrity Authority
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