Add: Make use of SessionManager

This commit is contained in:
Lars Simon Winzer
2026-03-12 20:13:50 +01:00
parent 74566f99cf
commit 711de2e6aa
3 changed files with 11 additions and 2 deletions
@@ -1,7 +1,9 @@
package ch.unibas.dmi.dbis.cs108.casono.server; package ch.unibas.dmi.dbis.cs108.casono.server;
import ch.unibas.dmi.dbis.cs108.casono.server.network.DisconnectEvent;
import ch.unibas.dmi.dbis.cs108.casono.server.network.EventBus; import ch.unibas.dmi.dbis.cs108.casono.server.network.EventBus;
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.SessionManager;
public class ServerApp { public class ServerApp {
public static void start(String arg) { public static void start(String arg) {
@@ -9,7 +11,9 @@ public class ServerApp {
System.out.println("You've selected the server. It will accept connections at port " + port); System.out.println("You've selected the server. It will accept connections at port " + port);
EventBus eventBus = new EventBus(); EventBus eventBus = new EventBus();
NetworkManager networkManager = new NetworkManager(port, eventBus); SessionManager sessionManager = new SessionManager();
eventBus.subscribe(DisconnectEvent.class, event -> sessionManager.removeSession(event.sessionId()));
NetworkManager networkManager = new NetworkManager(port, sessionManager, eventBus);
networkManager.start(); networkManager.start();
} }
} }
@@ -15,13 +15,15 @@ public class NetworkManager implements Runnable {
private Logger logger; private Logger logger;
private Thread thread; private Thread thread;
private Boolean running; private Boolean running;
private SessionManager sessionManager;
private EventBus eventBus; private EventBus eventBus;
public NetworkManager(Integer port, EventBus eventBus) { public NetworkManager(Integer port, SessionManager sessionManager, EventBus eventBus) {
this.port = port; this.port = port;
this.logger = LogManager.getLogger(NetworkManager.class); this.logger = LogManager.getLogger(NetworkManager.class);
this.thread = new Thread(this, "networkManager"); this.thread = new Thread(this, "networkManager");
this.running = true; this.running = true;
this.sessionManager = sessionManager;
this.eventBus = eventBus; this.eventBus = eventBus;
this.eventBus.subscribe(DisconnectEvent.class, event -> clientDisconnected(event)); this.eventBus.subscribe(DisconnectEvent.class, event -> clientDisconnected(event));
} }
@@ -46,6 +48,7 @@ public class NetworkManager implements Runnable {
System.out.println("Accepted connection from " + clientSocket.getRemoteSocketAddress()); System.out.println("Accepted connection from " + clientSocket.getRemoteSocketAddress());
Session session = new Session(new TcpTransport(clientSocket), eventBus); Session session = new Session(new TcpTransport(clientSocket), eventBus);
sessionManager.addSession(session);
session.start(); session.start();
} }
@@ -12,9 +12,11 @@ public class SessionManager {
public void addSession(Session session) { public void addSession(Session session) {
sessions.put(session.getId(), session); sessions.put(session.getId(), session);
System.out.println("Added session " + session.getId().value() + " to session manager");
} }
public Session removeSession(SessionId id) { public Session removeSession(SessionId id) {
System.out.println("Removed session " + id.value() + " from session manager");
return sessions.remove(id); return sessions.remove(id);
} }