diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/UserRegistry.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/UserRegistry.java index 0ab6a44..ec128bd 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/UserRegistry.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/UserRegistry.java @@ -1,6 +1,8 @@ package ch.unibas.dmi.dbis.cs108.casono.server.domain.user; import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; + +import java.util.Collection; import java.util.Iterator; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; @@ -49,4 +51,29 @@ public class UserRegistry { } } -} \ No newline at end of file + public synchronized boolean removeIfStillDisconnected(UserId userId) { + User user = byId.get(userId); + if (user == null) { + return false; + } + + if (user.getSessionId().isPresent()) { + return false; + } + + byId.remove(user.getId()); + return true; + } + + public synchronized Optional reassignSession(UserId userId, SessionId sessionId) { + User user = byId.get(userId); + if (user == null) return Optional.empty(); + + user.reassignSession(sessionId); + return Optional.of(user); + } + + public Collection getAllUsers() { + return byId.values(); + } +}