From fc4a88ee95afc1443cf3ab2a671ce0bead497987 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sat, 28 Mar 2026 13:12:30 +0100 Subject: [PATCH] Add: SessionDisconnectJob scheduling to ServerApp --- .../dbis/cs108/casono/server/ServerApp.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java index 2391450..e76e877 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java @@ -7,6 +7,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.network.command.CommandRouter; import ch.unibas.dmi.dbis.cs108.casono.server.network.events.DisconnectEvent; import ch.unibas.dmi.dbis.cs108.casono.server.network.events.EventBus; import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.CommandParserDispatcher; +import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionDisconnectJob; import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionManager; import java.time.Duration; import java.util.concurrent.Executors; @@ -17,9 +18,12 @@ import org.apache.logging.log4j.Logger; /** Application class for starting the server. */ public class ServerApp { - public static final int USER_CLEANUP_JOB_DELAY = 0; - public static final int USER_CLEANUP_JOB_PERIOD = 10; - public static final int USER_CLEANUP_JOB_RECONNECT_THRESHOLD = 10; + private static final int USER_CLEANUP_JOB_DELAY = 0; + private static final int USER_CLEANUP_JOB_PERIOD = 10; + private static final int USER_CLEANUP_JOB_RECONNECT_THRESHOLD = 10; + private static final int SESSION_DISCONNECT_JOB_DELAY = 0; + private static final int SESSION_DISCONNECT_JOB_PERIOD = 2; + private static final int SESSION_DISCONNECT_JOB_TIMEOUT = 5; public static void start(String arg) { int port = Integer.parseInt(arg); @@ -45,6 +49,14 @@ public class ServerApp { USER_CLEANUP_JOB_DELAY, USER_CLEANUP_JOB_PERIOD, TimeUnit.SECONDS); + scheduler.scheduleAtFixedRate( + new SessionDisconnectJob( + sessionManager, + eventBus, + Duration.ofSeconds(SESSION_DISCONNECT_JOB_TIMEOUT)), + SESSION_DISCONNECT_JOB_DELAY, + SESSION_DISCONNECT_JOB_PERIOD, + TimeUnit.SECONDS); networkManager.start(); }