Add UserRegistry to store all existing users and UserCleanupJob to periodicly remove expired user #189
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user