From a7cdf995c4dbb533d1a80a71d0a76c641a7c2a65 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sun, 15 Mar 2026 18:44:03 +0100 Subject: [PATCH] Add: Timestamp to User to store time of disconnect --- .../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 b5b3c48..01fd428 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,17 +1,20 @@ package ch.unibas.dmi.dbis.cs108.casono.server.domain.user; import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; +import java.time.Instant; import java.util.Optional; public class User { private final UserId id; private final String name; private SessionId sessionId; + private Instant disconnectedAt; public User(UserId id, String name, SessionId sessionId) { this.id = id; this.name = name; this.sessionId = sessionId; + this.disconnectedAt = null; } public UserId getId() { @@ -25,4 +28,18 @@ public class User { public Optional getSessionId() { return Optional.ofNullable(sessionId); } + + public Optional getDisconnectedAt() { + return Optional.ofNullable(disconnectedAt); + } + + public void reassignSession(SessionId sessionId) { + this.sessionId = sessionId; + this.disconnectedAt = null; + } + + public void markDisconnected() { + this.sessionId = null; + this.disconnectedAt = Instant.now(); + } }