From 5bd88445d2b83aa60297bec04a567461815e197f Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sun, 15 Mar 2026 20:33:24 +0100 Subject: [PATCH] Add: Modify User to store pending incoming messages --- .../cs108/casono/server/domain/user/User.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/User.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/User.java index 904112b..dc42ac3 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/User.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/User.java @@ -1,8 +1,13 @@ package ch.unibas.dmi.dbis.cs108.casono.server.domain.user; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.message.Message; import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; import java.time.Instant; +import java.util.ArrayDeque; +import java.util.List; import java.util.Optional; +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; /** Represents an authenticated user on the server. */ public class User { @@ -10,6 +15,7 @@ public class User { private final String name; private SessionId sessionId; private Instant disconnectedAt; + private final Queue messages; /** * Creates a new User with the given ID, name and session. @@ -23,6 +29,7 @@ public class User { this.name = name; this.sessionId = sessionId; this.disconnectedAt = null; + this.messages = new ConcurrentLinkedQueue<>(); } /** @@ -76,4 +83,14 @@ public class User { this.sessionId = null; this.disconnectedAt = Instant.now(); } + + public synchronized void enqueueMessage(Message message) { + messages.add(message); + } + + public synchronized List dequeueAllMessages(Message message) { + List allMessages = new ArrayDeque<>(messages).stream().toList(); + messages.clear(); + return allMessages; + } }