From 628e86a964a62b2ba9c280857603b3703c691206 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:58:25 +0100 Subject: [PATCH] Add: Pass CommandRouter to Session and SessionReader --- .../cs108/casono/server/network/sessions/Session.java | 9 ++++++++- .../casono/server/network/sessions/SessionReader.java | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/Session.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/Session.java index 6959ed7..0c5027b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/Session.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/Session.java @@ -1,5 +1,6 @@ package ch.unibas.dmi.dbis.cs108.casono.server.network.sessions; +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.CommandRouter; 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.response.PrimitiveResponse; @@ -14,6 +15,7 @@ public class Session { private final TransportLayer transport; private final BlockingQueue responseQueue; private final CommandParserDispatcher dispatcher; + private final CommandRouter router; private static final int RESPOND_QUEUE_SIZE = 32; /** @@ -24,10 +26,11 @@ public class Session { * @throws IOException if an I/O error occurs during initialization */ public Session( - TransportLayer transport, EventBus eventBus, CommandParserDispatcher dispatcher) { + TransportLayer transport, EventBus eventBus, CommandParserDispatcher dispatcher, CommandRouter router) { this.id = new SessionId(); this.transport = transport; this.dispatcher = dispatcher; + this.router = router; this.responseQueue = new ArrayBlockingQueue<>(RESPOND_QUEUE_SIZE); } @@ -66,4 +69,8 @@ public class Session { public CommandParserDispatcher getDispatcher() { return dispatcher; } + + public CommandRouter getRouter() { + return router; + } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionReader.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionReader.java index 0b21190..8ba5c62 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionReader.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionReader.java @@ -1,5 +1,6 @@ package ch.unibas.dmi.dbis.cs108.casono.server.network.sessions; +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; @@ -22,6 +23,7 @@ public class SessionReader implements Runnable { private final TransportLayer transport; private final EventBus eventBus; private final CommandParserDispatcher dispatcher; + private final CommandRouter router; private final Logger logger; public SessionReader(Session session, EventBus eventBus) { @@ -29,6 +31,7 @@ public class SessionReader implements Runnable { this.transport = session.getTransport(); this.eventBus = eventBus; this.dispatcher = session.getDispatcher(); + this.router = session.getRouter(); this.logger = LogManager.getLogger( SessionReader.class.toString() + "-" + session.getId().value()); @@ -50,8 +53,11 @@ public class SessionReader implements Runnable { PrimitiveRequest primitiveRequest = new PrimitiveRequest( requestContext, rawRequest.command(), rawRequest.parameters()); + logger.debug("Converted to {}", primitiveRequest); Request request = dispatcher.parse(primitiveRequest); + + router.execute(request); } catch (EOFException e) { logger.info("Client disconnected"); eventBus.publish(new DisconnectEvent(session.getId()));