From 1223e1a4a9a22de41e4cfeadbb645689b0da40c1 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sun, 15 Mar 2026 19:27:41 +0100 Subject: [PATCH] Add: Extend UserRegistry to remove Disconnected User, reassign User to new session and get all users --- .../server/domain/user/UserRegistry.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) 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(); + } +}