Remove session usage in storage and server managers

This commit is contained in:
Konicai 2024-08-04 17:10:56 -05:00
parent 5d8ce6fb60
commit f7e1c881b3
7 changed files with 27 additions and 28 deletions

View file

@ -39,7 +39,6 @@ import org.geysermc.extension.connect.utils.Server;
import org.geysermc.extension.connect.utils.ServerManager; import org.geysermc.extension.connect.utils.ServerManager;
import org.geysermc.extension.connect.utils.Utils; import org.geysermc.extension.connect.utils.Utils;
import org.geysermc.geyser.entity.attribute.GeyserAttributeType; import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
import org.geysermc.geyser.level.JavaDimension;
import org.geysermc.geyser.network.UpstreamPacketHandler; import org.geysermc.geyser.network.UpstreamPacketHandler;
import org.geysermc.geyser.session.GeyserSession; import org.geysermc.geyser.session.GeyserSession;
import org.geysermc.geyser.util.DimensionUtils; import org.geysermc.geyser.util.DimensionUtils;

View file

@ -30,7 +30,6 @@ import org.geysermc.extension.connect.GeyserConnect;
import org.geysermc.extension.connect.utils.Server; import org.geysermc.extension.connect.utils.Server;
import org.geysermc.extension.connect.utils.ServerManager; import org.geysermc.extension.connect.utils.ServerManager;
import org.geysermc.extension.connect.utils.Utils; import org.geysermc.extension.connect.utils.Utils;
import org.geysermc.geyser.session.GeyserSession;
import java.io.IOException; import java.io.IOException;
import java.sql.Connection; import java.sql.Connection;
@ -69,23 +68,23 @@ public abstract class AbstractSQLStorageManager extends AbstractStorageManager {
} }
@Override @Override
public void saveServers(GeyserSession session) { public void saveServers(org.geysermc.api.connection.Connection session) {
// replace into works on MySQL and SQLite // replace into works on MySQL and SQLite
try (PreparedStatement updatePlayersServers = connection.prepareStatement("REPLACE INTO players(xuid, servers) VALUES(?, ?)")) { try (PreparedStatement updatePlayersServers = connection.prepareStatement("REPLACE INTO players(xuid, servers) VALUES(?, ?)")) {
updatePlayersServers.setString(1, session.getAuthData().xuid()); updatePlayersServers.setString(1, session.xuid());
updatePlayersServers.setString(2, Utils.OBJECT_MAPPER.writeValueAsString(ServerManager.getServers(session))); updatePlayersServers.setString(2, Utils.OBJECT_MAPPER.writeValueAsString(ServerManager.getServers(session)));
updatePlayersServers.executeUpdate(); updatePlayersServers.executeUpdate();
} catch (IOException | SQLException exception) { } catch (IOException | SQLException exception) {
GeyserConnect.instance().logger().error("Couldn't save servers for " + session.getAuthData().name(), exception); GeyserConnect.instance().logger().error("Couldn't save servers for " + session.bedrockUsername(), exception);
} }
} }
@Override @Override
public List<Server> loadServers(GeyserSession session) { public List<Server> loadServers(org.geysermc.api.connection.Connection session) {
List<Server> servers = new ArrayList<>(); List<Server> servers = new ArrayList<>();
try (PreparedStatement getPlayersServers = connection.prepareStatement("SELECT servers FROM players WHERE xuid=?")) { try (PreparedStatement getPlayersServers = connection.prepareStatement("SELECT servers FROM players WHERE xuid=?")) {
getPlayersServers.setString(1, session.getAuthData().xuid()); getPlayersServers.setString(1, session.xuid());
ResultSet rs = getPlayersServers.executeQuery(); ResultSet rs = getPlayersServers.executeQuery();
while (rs.next()) { while (rs.next()) {
@ -96,7 +95,7 @@ public abstract class AbstractSQLStorageManager extends AbstractStorageManager {
} }
} }
} catch (IOException | SQLException exception) { } catch (IOException | SQLException exception) {
GeyserConnect.instance().logger().error("Couldn't load servers for " + session.getAuthData().name(), exception); GeyserConnect.instance().logger().error("Couldn't load servers for " + session.bedrockUsername(), exception);
} }
return servers; return servers;

View file

@ -26,8 +26,8 @@
package org.geysermc.extension.connect.storage; package org.geysermc.extension.connect.storage;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import org.geysermc.api.connection.Connection;
import org.geysermc.extension.connect.utils.Server; import org.geysermc.extension.connect.utils.Server;
import org.geysermc.geyser.session.GeyserSession;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -40,10 +40,10 @@ public class AbstractStorageManager {
public void closeStorage() { public void closeStorage() {
} }
public void saveServers(GeyserSession session) { public void saveServers(Connection session) {
} }
public List<Server> loadServers(GeyserSession session) { public List<Server> loadServers(Connection session) {
return new ArrayList<>(); return new ArrayList<>();
} }

View file

@ -25,8 +25,8 @@
package org.geysermc.extension.connect.storage; package org.geysermc.extension.connect.storage;
import org.geysermc.api.connection.Connection;
import org.geysermc.extension.connect.utils.Server; import org.geysermc.extension.connect.utils.Server;
import org.geysermc.geyser.session.GeyserSession;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -38,12 +38,12 @@ public class DisabledStorageManager extends AbstractStorageManager {
} }
@Override @Override
public void saveServers(GeyserSession session) { public void saveServers(Connection session) {
} }
@Override @Override
public List<Server> loadServers(GeyserSession session) { public List<Server> loadServers(Connection session) {
return new ArrayList<>(); return new ArrayList<>();
} }
} }

View file

@ -26,11 +26,11 @@
package org.geysermc.extension.connect.storage; package org.geysermc.extension.connect.storage;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import org.geysermc.api.connection.Connection;
import org.geysermc.extension.connect.GeyserConnect; import org.geysermc.extension.connect.GeyserConnect;
import org.geysermc.extension.connect.utils.Server; import org.geysermc.extension.connect.utils.Server;
import org.geysermc.extension.connect.utils.ServerManager; import org.geysermc.extension.connect.utils.ServerManager;
import org.geysermc.extension.connect.utils.Utils; import org.geysermc.extension.connect.utils.Utils;
import org.geysermc.geyser.session.GeyserSession;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
@ -49,19 +49,19 @@ public class JsonStorageManager extends AbstractStorageManager {
} }
@Override @Override
public void saveServers(GeyserSession session) { public void saveServers(Connection session) {
try { try {
Utils.OBJECT_MAPPER.writeValue(dataFolder.resolve(session.getAuthData().xuid() + ".json").toFile(), ServerManager.getServers(session)); Utils.OBJECT_MAPPER.writeValue(dataFolder.resolve(session.xuid() + ".json").toFile(), ServerManager.getServers(session));
} catch (IOException ignored) { } catch (IOException ignored) {
} }
} }
@Override @Override
public List<Server> loadServers(GeyserSession session) { public List<Server> loadServers(Connection session) {
List<Server> servers = new ArrayList<>(); List<Server> servers = new ArrayList<>();
try { try {
List<Server> loadedServers = Utils.OBJECT_MAPPER.readValue(dataFolder.resolve(session.getAuthData().xuid() + ".json").toFile(), new TypeReference<>() { List<Server> loadedServers = Utils.OBJECT_MAPPER.readValue(dataFolder.resolve(session.xuid() + ".json").toFile(), new TypeReference<>() {
}); });
if (loadedServers != null) { if (loadedServers != null) {
servers.addAll(loadedServers); servers.addAll(loadedServers);

View file

@ -25,8 +25,8 @@
package org.geysermc.extension.connect.utils; package org.geysermc.extension.connect.utils;
import org.geysermc.api.connection.Connection;
import org.geysermc.extension.connect.GeyserConnect; import org.geysermc.extension.connect.GeyserConnect;
import org.geysermc.geyser.session.GeyserSession;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -35,35 +35,35 @@ import java.util.Map;
public class ServerManager { public class ServerManager {
private static final Map<String, List<Server>> servers = new HashMap<>(); private static final Map<String, List<Server>> servers = new HashMap<>();
public static void loadServers(GeyserSession session) { public static void loadServers(Connection session) {
GeyserConnect.instance().logger().debug("Loading servers for " + Utils.displayName(session)); GeyserConnect.instance().logger().debug("Loading servers for " + Utils.displayName(session));
servers.put(session.xuid(), GeyserConnect.instance().storageManager().loadServers(session)); servers.put(session.xuid(), GeyserConnect.instance().storageManager().loadServers(session));
} }
public static void unloadServers(GeyserSession session) { public static void unloadServers(Connection session) {
if (getServers(session) == null) return; if (getServers(session) == null) return;
GeyserConnect.instance().logger().debug("Saving and unloading servers for " + Utils.displayName(session)); GeyserConnect.instance().logger().debug("Saving and unloading servers for " + Utils.displayName(session));
GeyserConnect.instance().storageManager().saveServers(session); GeyserConnect.instance().storageManager().saveServers(session);
servers.remove(session.xuid()); servers.remove(session.xuid());
} }
public static List<Server> getServers(GeyserSession session) { public static List<Server> getServers(Connection session) {
return servers.get(session.xuid()); return servers.get(session.xuid());
} }
public static void addServer(GeyserSession session, Server server) { public static void addServer(Connection session, Server server) {
servers.get(session.xuid()).add(server); servers.get(session.xuid()).add(server);
} }
public static void removeServer(GeyserSession session, Server server) { public static void removeServer(Connection session, Server server) {
getServers(session).remove(server); getServers(session).remove(server);
} }
public static int getServerIndex(GeyserSession session, Server server) { public static int getServerIndex(Connection session, Server server) {
return getServers(session).indexOf(server); return getServers(session).indexOf(server);
} }
public static void updateServer(GeyserSession session, int serverIndex, Server server) { public static void updateServer(Connection session, int serverIndex, Server server) {
getServers(session).set(serverIndex, server); getServers(session).set(serverIndex, server);
} }
} }

View file

@ -30,6 +30,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.cloudburstmc.protocol.bedrock.packet.BedrockPacketHandler; import org.cloudburstmc.protocol.bedrock.packet.BedrockPacketHandler;
import org.cloudburstmc.protocol.bedrock.packet.SetLocalPlayerAsInitializedPacket; import org.cloudburstmc.protocol.bedrock.packet.SetLocalPlayerAsInitializedPacket;
import org.cloudburstmc.protocol.bedrock.packet.TransferPacket; import org.cloudburstmc.protocol.bedrock.packet.TransferPacket;
import org.geysermc.api.connection.Connection;
import org.geysermc.extension.connect.GeyserConnect; import org.geysermc.extension.connect.GeyserConnect;
import org.geysermc.geyser.session.GeyserSession; import org.geysermc.geyser.session.GeyserSession;
@ -75,7 +76,7 @@ public class Utils {
return file; return file;
} }
public static String displayName(GeyserSession session) { public static String displayName(Connection session) {
return session.bedrockUsername() + " (" + session.xuid() + ")"; return session.bedrockUsername() + " (" + session.xuid() + ")";
} }