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(); + } }