From 69a5a94028014847f7d135a7a4aa8f839f4005dc Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:09:33 +0100 Subject: [PATCH 01/12] Add: CommandHandler interface for executing requests --- .../casono/server/network/command/CommandHandler.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandHandler.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandHandler.java new file mode 100644 index 0000000..9c07c56 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandHandler.java @@ -0,0 +1,7 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.command; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request; + +public interface CommandHandler { + void execute(Request request); +} From d9f6838e05e169a516c3157b23c5bacaa6f68f6c Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:20:25 +0100 Subject: [PATCH 02/12] Add: UnknownRequestException class to throw when encountering unknown request type --- .../network/command/UnknownRequestException.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/UnknownRequestException.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/UnknownRequestException.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/UnknownRequestException.java new file mode 100644 index 0000000..e7889b0 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/UnknownRequestException.java @@ -0,0 +1,14 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.command; + +public class UnknownRequestException extends RuntimeException { + private final String requestName; + + public UnknownRequestException(String message, String requestName) { + this.requestName = requestName; + super(message); + } + + public String getRequestName() { + return requestName; + } +} From fd17b49ed9b7f47e8d2043e355a56805a8722365 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:51:32 +0100 Subject: [PATCH 03/12] Add: CommandRouter to route Request to matching CommandHandler --- .../server/network/command/CommandRouter.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java new file mode 100644 index 0000000..186c1fe --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java @@ -0,0 +1,24 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.command; + +import java.util.HashMap; +import java.util.Map; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request; + +public class CommandRouter { + private final Map, CommandHandler> handlers = new HashMap<>(); + + public void register(Class request, CommandHandler handler) { + handlers.put(request, handler); + } + + public void execute(Request request) { + CommandHandler handler = handlers.get(request.getClass()); + + if (handler == null) { + String requestName = request.getClass().toString(); + throw new UnknownRequestException("Unable to execute request " + requestName + ". Type unknown", requestName); + } + handler.execute(request); + } +} From 20047405416fa34ad97995399adbf09a71d8efa1 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:53:19 +0100 Subject: [PATCH 04/12] Add: CommandHandler interface to be generic --- .../cs108/casono/server/network/command/CommandHandler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandHandler.java index 9c07c56..34228c7 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandHandler.java @@ -2,6 +2,6 @@ package ch.unibas.dmi.dbis.cs108.casono.server.network.command; import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request; -public interface CommandHandler { - void execute(Request request); +public interface CommandHandler { + void execute(T request); } From 52c347d233dcab7222f1b3a0bc3f883b9e9b7ff4 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:55:26 +0100 Subject: [PATCH 05/12] Add: Modify CommandRouter to use generic CommandHandler type --- .../casono/server/network/command/CommandRouter.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java index 186c1fe..282c6c9 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java @@ -6,14 +6,16 @@ import java.util.Map; import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request; public class CommandRouter { - private final Map, CommandHandler> handlers = new HashMap<>(); + private final Map, CommandHandler> handlers = new HashMap<>(); - public void register(Class request, CommandHandler handler) { + public void register(Class request, CommandHandler handler) { handlers.put(request, handler); } + // Safe, because during registration, it's ensured that the provided CommandHandler only receives requests it can handle. + @SuppressWarnings("unchecked") public void execute(Request request) { - CommandHandler handler = handlers.get(request.getClass()); + CommandHandler handler = (CommandHandler) handlers.get(request.getClass()); if (handler == null) { String requestName = request.getClass().toString(); From a520f69f3e9bd277e2a0884b84a7c355d712d39a Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:56:22 +0100 Subject: [PATCH 06/12] Fix: Ensure matching type at compile-time --- .../dbis/cs108/casono/server/network/command/CommandRouter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java index 282c6c9..0dafc58 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java @@ -8,7 +8,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request; public class CommandRouter { private final Map, CommandHandler> handlers = new HashMap<>(); - public void register(Class request, CommandHandler handler) { + public void register(Class request, CommandHandler handler) { handlers.put(request, handler); } From d25f533ee9b13ff86253307e7cbd17bb38270ec7 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:57:00 +0100 Subject: [PATCH 07/12] Add: Integrate CommandRouter into SessionManager for request routing --- .../casono/server/network/sessions/SessionManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 bbf1a14..a33e7b0 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 @@ -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; @@ -16,13 +17,15 @@ 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) { + public SessionManager(EventBus eventBus, CommandParserDispatcher dispatcher, CommandRouter router) { this.sessions = new ConcurrentHashMap<>(); this.eventBus = eventBus; this.logger = LogManager.getLogger(SessionManager.class); this.dispatcher = dispatcher; + this.router = router; } /** @@ -34,7 +37,7 @@ public class SessionManager { * @return newly created session */ public Session create(TransportLayer transport) { - Session session = new Session(transport, eventBus, dispatcher); + Session session = new Session(transport, eventBus, dispatcher, router); SessionReader reader = new SessionReader(session, eventBus); SessionWriter writer = new SessionWriter(session); From 628e86a964a62b2ba9c280857603b3703c691206 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:58:25 +0100 Subject: [PATCH 08/12] 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())); From 9a6ad9f1bb2b857c083c0cc015494e2daaf41d28 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 17:59:41 +0100 Subject: [PATCH 09/12] Add: Create CommandRouter at server startup and pass to SessionManager --- .../ch/unibas/dmi/dbis/cs108/casono/server/ServerApp.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 9327139..b9e6679 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 @@ -3,6 +3,8 @@ 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.command.CommandRouter; +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.TestCommandHandler; 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; @@ -28,7 +30,9 @@ public class ServerApp { EventBus eventBus = new EventBus(); CommandParserDispatcher dispatcher = new CommandParserDispatcher(); - SessionManager sessionManager = new SessionManager(eventBus, dispatcher); + 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); From a9ffb4daeb19dc2f1f60bca63c1b8e27a7759a5a Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 18:01:57 +0100 Subject: [PATCH 10/12] Style: Apply formatting by Spotless --- .../dmi/dbis/cs108/casono/server/ServerApp.java | 1 - .../casono/server/network/command/CommandRouter.java | 12 +++++++----- .../casono/server/network/sessions/Session.java | 5 ++++- .../server/network/sessions/SessionManager.java | 3 ++- .../server/network/sessions/SessionReader.java | 2 +- 5 files changed, 14 insertions(+), 9 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 b9e6679..2391450 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 @@ -4,7 +4,6 @@ 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.command.CommandRouter; -import ch.unibas.dmi.dbis.cs108.casono.server.network.command.TestCommandHandler; 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; diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java index 0dafc58..0badeff 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/CommandRouter.java @@ -1,10 +1,9 @@ package ch.unibas.dmi.dbis.cs108.casono.server.network.command; +import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request; import java.util.HashMap; import java.util.Map; -import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request; - public class CommandRouter { private final Map, CommandHandler> handlers = new HashMap<>(); @@ -12,14 +11,17 @@ public class CommandRouter { handlers.put(request, handler); } - // Safe, because during registration, it's ensured that the provided CommandHandler only receives requests it can handle. + // Safe, because during registration, it's ensured that the provided CommandHandler only + // receives requests it can handle. @SuppressWarnings("unchecked") public void execute(Request request) { - CommandHandler handler = (CommandHandler) handlers.get(request.getClass()); + CommandHandler handler = + (CommandHandler) handlers.get(request.getClass()); if (handler == null) { String requestName = request.getClass().toString(); - throw new UnknownRequestException("Unable to execute request " + requestName + ". Type unknown", requestName); + throw new UnknownRequestException( + "Unable to execute request " + requestName + ". Type unknown", requestName); } handler.execute(request); } 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 0c5027b..d6e2094 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 @@ -26,7 +26,10 @@ public class Session { * @throws IOException if an I/O error occurs during initialization */ public Session( - TransportLayer transport, EventBus eventBus, CommandParserDispatcher dispatcher, CommandRouter router) { + TransportLayer transport, + EventBus eventBus, + CommandParserDispatcher dispatcher, + CommandRouter router) { this.id = new SessionId(); this.transport = transport; this.dispatcher = dispatcher; 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 a33e7b0..65a97a3 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 @@ -20,7 +20,8 @@ public class SessionManager { private final CommandRouter router; /** Constructs a new SessionManager. */ - public SessionManager(EventBus eventBus, CommandParserDispatcher dispatcher, CommandRouter router) { + public SessionManager( + EventBus eventBus, CommandParserDispatcher dispatcher, CommandRouter router) { this.sessions = new ConcurrentHashMap<>(); this.eventBus = eventBus; this.logger = LogManager.getLogger(SessionManager.class); 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 8ba5c62..cd74de9 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 @@ -56,7 +56,7 @@ public class SessionReader implements Runnable { logger.debug("Converted to {}", primitiveRequest); Request request = dispatcher.parse(primitiveRequest); - + router.execute(request); } catch (EOFException e) { logger.info("Client disconnected"); From 8ed1bab0671e3101025d46d4d10153ca770c1aee Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 18:09:07 +0100 Subject: [PATCH 11/12] Style: Put call to superclass constructor before variable assignment in UnknownRequestException constructor --- .../casono/server/network/command/UnknownRequestException.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/UnknownRequestException.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/UnknownRequestException.java index e7889b0..60c7fa3 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/UnknownRequestException.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/UnknownRequestException.java @@ -4,8 +4,8 @@ public class UnknownRequestException extends RuntimeException { private final String requestName; public UnknownRequestException(String message, String requestName) { - this.requestName = requestName; super(message); + this.requestName = requestName; } public String getRequestName() { From 58d06fad39f68de12c6034ac1c7b8388ef52219c Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Thu, 26 Mar 2026 18:10:32 +0100 Subject: [PATCH 12/12] Style: Line length in SessionManager --- .../server/network/sessions/SessionManager.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) 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 65a97a3..b3d52a6 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 @@ -42,12 +42,14 @@ public class SessionManager { SessionReader reader = new SessionReader(session, eventBus); SessionWriter writer = new SessionWriter(session); - Thread readerThread = Thread.ofVirtual() - .name("session-" + session.getId().value() + "-reader") - .unstarted(reader); - Thread writerThread = Thread.ofVirtual() - .name("session-" + session.getId().value() + "-writer") - .unstarted(writer); + Thread readerThread = + Thread.ofVirtual() + .name("session-" + session.getId().value() + "-reader") + .unstarted(reader); + Thread writerThread = + Thread.ofVirtual() + .name("session-" + session.getId().value() + "-writer") + .unstarted(writer); sessions.put(session.getId(), new SessionHandle(session, readerThread, writerThread)); readerThread.start();