Noticed enums can be treated as clases to an extent so added a HashSet that accociates strings with Enum fields of the Protocol.

ProtocolValidator might become redundant!
This commit is contained in:
Sebastian Lenzlinger 2022-03-25 12:50:57 +01:00
parent 7f967f6818
commit 846d0a8187
3 changed files with 37 additions and 3 deletions

View File

@ -1,6 +1,7 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol; package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
import java.util.HashMap;
public enum NTtBCommands { public enum NTtBCommands {
/** /**
@ -26,5 +27,18 @@ public enum NTtBCommands {
* MSGRS: "Message recieved": Paramaters: a string detailing to the client that and what the server recieved as command. * MSGRS: "Message recieved": Paramaters: a string detailing to the client that and what the server recieved as command.
*/ */
//Server Responses //Server Responses
MSGRS, MSGRS;
//Allowes to associate strings with the enum objects. the enum fields are easier for switch statements.
private HashMap<String,NTtBCommands> stringNTtBCommandsHashMap = new HashMap<>();
private NTtBCommands(){
for(NTtBCommands cmd : NTtBCommands.values()){
stringNTtBCommandsHashMap.put(cmd.name(), cmd);
}
}
public boolean isLegal(String s){
return false;
}
} }

View File

@ -1,4 +1,23 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol; package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
import java.util.EnumSet;
import java.util.HashSet;
//TODO Possibly redundant!!
public class ProtocolValidator { public class ProtocolValidator {
//TODO String or NTtBCommands HashSet?
public static HashSet<NTtBCommands> legalCommands = initializeLegalCommands();
//Initialize the legalCommands set with the protocol values.
private static HashSet<NTtBCommands> initializeLegalCommands(){
EnumSet<NTtBCommands> enumVals = EnumSet.allOf(NTtBCommands.class);
return new HashSet<>(enumVals);
}
public boolean validateCommand(String s) {
//TODO implement if needed
return false;
}
} }

View File

@ -1,12 +1,13 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server; package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NTtBCommands;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.ProtocolDecoder; import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.ProtocolDecoder;
import java.util.List; import java.util.List;
import java.util.Scanner; import java.util.Scanner;
public class ClientMsgDecoder implements ProtocolDecoder { public class ClientMsgDecoder implements ProtocolDecoder {
private NTtBCommands protocol;
@Override @Override
public String decodeMsg(String msg) { public String decodeMsg(String msg) {
@ -46,6 +47,6 @@ public class ClientMsgDecoder implements ProtocolDecoder {
* of server agency according to client msg * of server agency according to client msg
*/ */
private @interface serverActionBuilder { private @interface serverActionBuilder {
//TODO implement what should happen server side //TODO implement what should happen server side(vote/chat/quit etc)
} }
} }