Add UserRegistry to store all existing users and UserCleanupJob to periodicly remove expired user #189

Merged
lars.winzer merged 12 commits from feat/user-serverside into main 2026-03-15 20:00:59 +01:00
Showing only changes of commit a7cdf995c4 - Show all commits
@@ -1,17 +1,20 @@
package ch.unibas.dmi.dbis.cs108.casono.server.domain.user; package ch.unibas.dmi.dbis.cs108.casono.server.domain.user;
import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId;
import java.time.Instant;
import java.util.Optional; import java.util.Optional;
public class User { public class User {
private final UserId id; private final UserId id;
private final String name; private final String name;
private SessionId sessionId; private SessionId sessionId;
private Instant disconnectedAt;
public User(UserId id, String name, SessionId sessionId) { public User(UserId id, String name, SessionId sessionId) {
this.id = id; this.id = id;
this.name = name; this.name = name;
this.sessionId = sessionId; this.sessionId = sessionId;
this.disconnectedAt = null;
} }
public UserId getId() { public UserId getId() {
@@ -25,4 +28,18 @@ public class User {
public Optional<SessionId> getSessionId() { public Optional<SessionId> getSessionId() {
return Optional.ofNullable(sessionId); return Optional.ofNullable(sessionId);
} }
public Optional<Instant> 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();
}
} }