From a62da1235dab9c932e4489f6d55fc4bc7eeb79bb Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Wed, 8 Apr 2026 17:10:20 +0200 Subject: [PATCH] Refactor: Move CommandRouter dependency from SessionManager to NetworkManager --- .../ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java | 7 +++---- .../dbis/cs108/casono/server/network/NetworkManager.java | 7 +++++-- .../casono/server/network/sessions/SessionManager.java | 8 +++----- 3 files changed, 11 insertions(+), 11 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 1b5f62a..b553a36 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 @@ -46,11 +46,11 @@ public class ServerApp { EventBus eventBus = new EventBus(); CommandParserDispatcher dispatcher = new CommandParserDispatcher(); + SessionManager sessionManager = new SessionManager(eventBus, dispatcher); + ResponseDispatcher responseDispatcher = new ResponseDispatcher(sessionManager); CommandRouter router = new CommandRouter(); - SessionManager sessionManager = new SessionManager(eventBus, dispatcher, router); eventBus.subscribe(DisconnectEvent.class, event -> sessionManager.onDisconnect(event)); - NetworkManager networkManager = new NetworkManager(port, sessionManager); UserRegistry userRegistry = new UserRegistry(); eventBus.subscribe( @@ -71,10 +71,9 @@ public class ServerApp { SESSION_DISCONNECT_JOB_PERIOD, TimeUnit.SECONDS); - ResponseDispatcher responseDispatcher = new ResponseDispatcher(sessionManager); - registerCommands(dispatcher, router, responseDispatcher, userRegistry); + NetworkManager networkManager = new NetworkManager(port, sessionManager, router); networkManager.start(); } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/NetworkManager.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/NetworkManager.java index d9382a4..83a39d3 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/NetworkManager.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/NetworkManager.java @@ -1,5 +1,6 @@ package ch.unibas.dmi.dbis.cs108.casono.server.network; +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandRouter; import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionManager; import ch.unibas.dmi.dbis.cs108.casono.server.network.transport.TcpTransport; import java.io.IOException; @@ -15,6 +16,7 @@ public class NetworkManager implements Runnable { private Thread thread; private Boolean running; private SessionManager sessionManager; + private CommandRouter router; /** * Creates a new NetworkManager with the given port, session manager, and event bus. @@ -22,12 +24,13 @@ public class NetworkManager implements Runnable { * @param port the port to listen on * @param sessionManager the session manager to use */ - public NetworkManager(Integer port, SessionManager sessionManager) { + public NetworkManager(Integer port, SessionManager sessionManager, CommandRouter router) { this.port = port; this.logger = LogManager.getLogger(NetworkManager.class); this.thread = new Thread(this, "networkManager"); this.running = true; this.sessionManager = sessionManager; + this.router = router; } /** Starts the internal thread to accept new connections. */ @@ -45,7 +48,7 @@ public class NetworkManager implements Runnable { logger.debug("Accepted connection from {}", clientSocket.getRemoteSocketAddress()); - sessionManager.create(new TcpTransport(clientSocket)); + sessionManager.create(new TcpTransport(clientSocket), router); } } catch (IOException e) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionManager.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionManager.java index c0ffe55..569b828 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionManager.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionManager.java @@ -19,16 +19,13 @@ public class SessionManager { private final EventBus eventBus; private final Logger logger; private final CommandParserDispatcher dispatcher; - private final CommandRouter router; /** Constructs a new SessionManager. */ - public SessionManager( - EventBus eventBus, CommandParserDispatcher dispatcher, CommandRouter router) { + public SessionManager(EventBus eventBus, CommandParserDispatcher dispatcher) { this.sessions = new ConcurrentHashMap<>(); this.eventBus = eventBus; this.logger = LogManager.getLogger(SessionManager.class); this.dispatcher = dispatcher; - this.router = router; } /** @@ -37,9 +34,10 @@ public class SessionManager { *

Will create both worker threads and start them. * * @param transport to create session from + * @param router the command router used by the created session * @return newly created session */ - public Session create(TransportLayer transport) { + public Session create(TransportLayer transport, CommandRouter router) { Session session = new Session(transport, eventBus, dispatcher, router); SessionReader reader = new SessionReader(session, eventBus); SessionWriter writer = new SessionWriter(session);