diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/lobby/get_lobby_list/GetLobbyListHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/lobby/get_lobby_list/GetLobbyListHandler.java new file mode 100644 index 0000000..49e49d8 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/lobby/get_lobby_list/GetLobbyListHandler.java @@ -0,0 +1,28 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.lobby.get_lobby_list; + +import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.dispatcher.ResponseDispatcher; +import java.util.Collection; + +/** + * Handler for the `GET_LOBBY_LIST` command. + * + *
Queries the {@link LobbyManager} for all available lobbies and dispatches a {@link
+ * GetLobbyListResponse} containing basic metadata for each lobby (`ID`, `NAME`, `PLAYER_COUNT`).
+ */
+public class GetLobbyListHandler extends CommandHandler Parses the incoming primitive request and produces a {@link GetLobbyListRequest}. This command
+ * takes no parameters.
+ */
+public class GetLobbyListParser implements CommandParser Contains only the request context; this command does not require parameters.
+ */
+public class GetLobbyListRequest extends Request {
+ public GetLobbyListRequest(RequestContext context) {
+ super(context);
+ }
+}
diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/lobby/get_lobby_list/GetLobbyListResponse.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/lobby/get_lobby_list/GetLobbyListResponse.java
new file mode 100644
index 0000000..3737189
--- /dev/null
+++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/lobby/get_lobby_list/GetLobbyListResponse.java
@@ -0,0 +1,37 @@
+package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.lobby.get_lobby_list;
+
+import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby;
+import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.RequestContext;
+import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.SuccessResponse;
+import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.builder.ResponseBody;
+import java.util.Collection;
+
+/**
+ * Success response for `GET_LOBBY_LIST`.
+ *
+ * Builds a `LOBBIES` collection with repeated `LOBBY` blocks containing `ID`, `NAME` and
+ * `PLAYER_COUNT`.
+ */
+public class GetLobbyListResponse extends SuccessResponse {
+ public GetLobbyListResponse(RequestContext context, Collection