From 30986d2d866fe7f4220dd680067e50c212f4f947 Mon Sep 17 00:00:00 2001 From: Sebastian Lenzlinger Date: Fri, 25 Mar 2022 12:17:42 +0100 Subject: [PATCH] Added ProtocolValidator class added MSGRS command (message recieved, sent for server to client after recieving a msg with what was recieved as aprameters) to NTtBCommands continued work on ClientMsgDecoder --- .../cs108/Multiplayer/Protocol/NTtBCommands.java | 13 ++++++++++++- .../Multiplayer/Protocol/ProtocolValidator.java | 4 ++++ .../cs108/Multiplayer/Server/ClientMsgDecoder.java | 14 ++++++++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/ProtocolValidator.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/NTtBCommands.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/NTtBCommands.java index 26bc9d8..eed6d8b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/NTtBCommands.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/NTtBCommands.java @@ -4,6 +4,7 @@ package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol; public enum NTtBCommands { /** + * Client commands: * CRTGM: Create a new game * CHATA: chat to all * CHATW: whisper chat @@ -15,5 +16,15 @@ public enum NTtBCommands { * QUITS: quit server/ leave servr * LISTP: list players/clients in session with the Server */ - CRTGM, CHATA, CHATW, CHATG, LEAVG, JOING, VOTEG, QUITS, LISTP, CUSRN + + + + //Client Commands + CRTGM, CHATA, CHATW, CHATG, LEAVG, JOING, VOTEG, QUITS, LISTP, CUSRN, + + /** + * MSGRS: "Message recieved": Paramaters: a string detailing to the client that and what the server recieved as command. + */ + //Server Responses + MSGRS, } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/ProtocolValidator.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/ProtocolValidator.java new file mode 100644 index 0000000..82029ca --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/ProtocolValidator.java @@ -0,0 +1,4 @@ +package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol; + +public class ProtocolValidator { +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Server/ClientMsgDecoder.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Server/ClientMsgDecoder.java index b5271b8..44fc239 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Server/ClientMsgDecoder.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Server/ClientMsgDecoder.java @@ -6,11 +6,21 @@ import java.util.List; import java.util.Scanner; public class ClientMsgDecoder implements ProtocolDecoder { - Scanner sc = new Scanner(); + @Override public String decodeMsg(String msg) { - List msgTokens = tokenizeMsg(msg); + List msgTokens = tokenizeMsg(msg); //List where we'll put the string tokens seperated by $. + String cmd; //The command token + try{ + cmd = getCommand(msgTokens); + } catch (NoCommandTokenException e) { + //TODO: decide what to do here. How can we catch this smartly and where do we send it? + System.out.println(("ClientMsgDecoder cannot find a command token")); + e.printStackTrace(System.out); + return"ERROR$command token not found"; //TODO This is a very unelegant solution. + } + return null; }