Add: Create UserRegistry and schedule UserCleanupJob
This commit is contained in:
@@ -1,14 +1,24 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.casono.server;
|
package ch.unibas.dmi.dbis.cs108.casono.server;
|
||||||
|
|
||||||
|
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserCleanupJob;
|
||||||
|
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
|
||||||
import ch.unibas.dmi.dbis.cs108.casono.server.network.NetworkManager;
|
import ch.unibas.dmi.dbis.cs108.casono.server.network.NetworkManager;
|
||||||
import ch.unibas.dmi.dbis.cs108.casono.server.network.events.DisconnectEvent;
|
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.events.EventBus;
|
||||||
import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionManager;
|
import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionManager;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
/** Application class for starting the server. */
|
/** Application class for starting the server. */
|
||||||
public class ServerApp {
|
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;
|
||||||
|
|
||||||
public static void start(String arg) {
|
public static void start(String arg) {
|
||||||
int port = Integer.parseInt(arg);
|
int port = Integer.parseInt(arg);
|
||||||
|
|
||||||
@@ -20,6 +30,18 @@ public class ServerApp {
|
|||||||
eventBus.subscribe(
|
eventBus.subscribe(
|
||||||
DisconnectEvent.class, event -> sessionManager.removeSession(event.sessionId()));
|
DisconnectEvent.class, event -> sessionManager.removeSession(event.sessionId()));
|
||||||
NetworkManager networkManager = new NetworkManager(port, sessionManager, eventBus);
|
NetworkManager networkManager = new NetworkManager(port, sessionManager, eventBus);
|
||||||
|
|
||||||
|
UserRegistry userRegistry = new UserRegistry();
|
||||||
|
eventBus.subscribe(
|
||||||
|
DisconnectEvent.class, event -> userRegistry.onDisconnect(event.sessionId()));
|
||||||
|
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
|
||||||
|
scheduler.scheduleAtFixedRate(
|
||||||
|
new UserCleanupJob(
|
||||||
|
userRegistry, Duration.ofSeconds(USER_CLEANUP_JOB_RECONNECT_THRESHOLD)),
|
||||||
|
USER_CLEANUP_JOB_DELAY,
|
||||||
|
USER_CLEANUP_JOB_PERIOD,
|
||||||
|
TimeUnit.SECONDS);
|
||||||
|
|
||||||
networkManager.start();
|
networkManager.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user