diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/CentralServerData.java b/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/CentralServerData.java index 2897713..cfb895a 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/CentralServerData.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/CentralServerData.java @@ -23,9 +23,10 @@ public class CentralServerData { public static final BudaLogConfig l = new BudaLogConfig(LOGGER); //TODO which datastructures should be used here? - private Set clientsOnServer; - private List allLobbies; - private Map lobbyIDMap; + //TODO Static or non static? + private static Set clientsOnServer; + private static List allLobbies; + private static Map lobbyIDMap; public CentralServerData() { clientsOnServer = new HashSet<>(); @@ -67,7 +68,7 @@ public class CentralServerData { public synchronized void removeClientFromLobby(ClientHandler client) { boolean foundAndRemoved = false; for (Lobby l : allLobbies) { - foundAndRemoved = l.getPlayers().remove(client); + foundAndRemoved = l.removePlayer(client); } LOGGER.debug("foundAndRemoved value: " + foundAndRemoved); } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/ClientAttributes.java b/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/ClientAttributes.java index bd2df1c..ac53c9b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/ClientAttributes.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/ClientAttributes.java @@ -1,10 +1,18 @@ package ch.unibas.dmi.dbis.cs108.sebaschi; +import ch.unibas.dmi.dbis.cs108.BudaLogConfig; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + /** * Attributes of a client visible to server. */ public class ClientAttributes { - String name; - int id; + public static final Logger LOGGER = LogManager.getLogger(); + public static final BudaLogConfig l = new BudaLogConfig(LOGGER); + private String clientUserName; + private boolean loggedIn; + private boolean isInALobby; + private Lobby clientsLobby; } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/Lobby.java b/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/Lobby.java index 4bcc61e..ba882fe 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/Lobby.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/Lobby.java @@ -127,4 +127,22 @@ public class Lobby { } } + /** + * Does what is says on the box. Needs to be called when a client disconnects for some reason and + * cannot reconnect. I.E. when the server closes the connection to that client, the client should + * be removed from the list. + * + * @param player that is to be removed + * @return true if a player was found and removed. Used for debugging. + */ + public synchronized boolean removePlayer(ClientHandler player) { + return this.getPlayers().remove(player); + } + + public void broadcastToLounge(String msg) { + for (ClientHandler lounger : this.getPlayers()) { + + } + } + }