deleted unused classes
work on: NTtBFormatMsg ClientMsgDecoder Notice: no correct response is generated yet!
This commit is contained in:
parent
002e9a5e57
commit
3575c2010c
@ -1,8 +1,5 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
|
||||
|
||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NTtBFormatMsg;
|
||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.ProtocolMessage;
|
||||
|
||||
public interface ProtocolParser {
|
||||
/**
|
||||
* Takes a String from client input and parses into
|
||||
|
||||
@ -1,13 +1,43 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
||||
|
||||
public abstract class NTtBFormatMsg extends ProtocolMessage{
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
private String message;
|
||||
public class NTtBFormatMsg {
|
||||
|
||||
public NTtBFormatMsg(String msg) {
|
||||
this.message = msg;
|
||||
private String msgToClient;
|
||||
private NightTrainProtocol.NTtBCommands command;
|
||||
private final Queue<String> parameters; //TODO maybe use array?
|
||||
|
||||
public NTtBFormatMsg(String msgToClient, NightTrainProtocol.NTtBCommands command, Queue<String> parameters) {
|
||||
this.msgToClient = msgToClient;
|
||||
this.command = command;
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public boolean isCorrectlyFormatted(String msg){ return false;}
|
||||
public String getMessage(){return this.message;}
|
||||
public NTtBFormatMsg() {
|
||||
this.msgToClient = "";
|
||||
this.command = null;
|
||||
this.parameters = new LinkedList<>();
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return msgToClient;
|
||||
}
|
||||
|
||||
public NightTrainProtocol.NTtBCommands getCommand() {
|
||||
return command;
|
||||
}
|
||||
|
||||
public Queue<String> getParameters() {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
public void setMsgToClient(String msgToClient) {
|
||||
this.msgToClient = msgToClient;
|
||||
}
|
||||
|
||||
public void setCommand(NightTrainProtocol.NTtBCommands command) {
|
||||
this.command = command;
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,4 +14,5 @@
|
||||
/**
|
||||
Server Commands:
|
||||
* MSGRS: "Message recieved": Paramaters: a string detailing to the client that and what the server recieved as command.
|
||||
* SEROR: Server had an error. (used for debugging)
|
||||
*/
|
||||
@ -11,16 +11,56 @@ for this purpose.
|
||||
*/
|
||||
|
||||
public class NightTrainProtocol {
|
||||
public static HashMap<String, NTtBCommands> stringNTtBCommandsHashMap = new HashMap<>();
|
||||
public static ProtocolValidator protocolValidator;
|
||||
public static HashSet<String> legalStrings;
|
||||
//TODO: initialite the fields
|
||||
|
||||
private static HashMap<String, NTtBCommands> stringNTtBCommandsHashMap = initializeMapping();
|
||||
private static ProtocolValidator protocolValidator;
|
||||
private static HashSet<String> legalStrings = new HashSet<>(stringNTtBCommandsHashMap.keySet());
|
||||
|
||||
public enum NTtBCommands {
|
||||
//Client Commands
|
||||
CRTGM, CHATA, CHATW, CHATG, LEAVG, JOING, VOTEG, QUITS, LISTP, CUSRN,
|
||||
//Server Responses
|
||||
MSGRS;
|
||||
MSGRS, SEROR;
|
||||
}
|
||||
|
||||
//Allowes to associate strings with the enum objects. the enum fields are easier for switch statements.
|
||||
private static HashMap<String, NTtBCommands> initializeMapping(){
|
||||
HashMap<String, NTtBCommands> map = new HashMap<>();
|
||||
for(NTtBCommands cmd: NTtBCommands.values()) {
|
||||
map.put(cmd.toString(), cmd);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
//getters & setters
|
||||
|
||||
public static HashMap<String, NTtBCommands> getStringNTtBCommandsHashMap() {
|
||||
return stringNTtBCommandsHashMap;
|
||||
}
|
||||
|
||||
public static HashSet<String> getLegalStrings() {
|
||||
return legalStrings;
|
||||
}
|
||||
|
||||
//Utility Methods:
|
||||
/**
|
||||
* Validates a given string is a valid representation
|
||||
* of a protocol command
|
||||
* @param cmd, the string command to be validated
|
||||
* @return true if <code>cmd</code> is a valid command
|
||||
*/
|
||||
public boolean isLegalCmdString(String cmd) {
|
||||
return legalStrings.contains(cmd);
|
||||
}
|
||||
|
||||
public NTtBCommands getCmdEnumObject(String cmd) throws NoLegalProtocolCommandStringFoundException {
|
||||
if(isLegalCmdString(cmd)){
|
||||
return stringNTtBCommandsHashMap.get(cmd);
|
||||
} else {
|
||||
throw new NoLegalProtocolCommandStringFoundException();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//TODO analyize what methods are needed
|
||||
}
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
||||
|
||||
public class NoLegalProtocolCommandStringFoundException extends Exception {
|
||||
}
|
||||
@ -2,5 +2,5 @@ package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
||||
|
||||
public interface ProtocolDecoder {
|
||||
|
||||
public String decodeMsg(String msg);
|
||||
public NTtBFormatMsg decodeMsg(String msg);
|
||||
}
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
||||
|
||||
public class ProtocolMessage {
|
||||
//TODO ProtocolMessage Implementation
|
||||
//TODO definition of abilities and properties of class
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.methods;
|
||||
|
||||
public class Chat {
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.methods;
|
||||
|
||||
public class NewGame {
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.methods;
|
||||
|
||||
public class QUITS {
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.methods;
|
||||
|
||||
public class VOTEG {
|
||||
}
|
||||
@ -46,7 +46,7 @@ public class ClientHandler implements Runnable {
|
||||
try {
|
||||
|
||||
msg = in.readLine();
|
||||
response = clientMsgDecoder.decodeMsg(msg); //The response of the server to the clients message
|
||||
response = clientMsgDecoder.decodeMsg(msg).getMessage(); //The response of the server to the clients message
|
||||
out.write(response);
|
||||
out.newLine();
|
||||
out.flush();
|
||||
|
||||
@ -1,24 +1,35 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
||||
|
||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NTtBFormatMsg;
|
||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NightTrainProtocol;
|
||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NoLegalProtocolCommandStringFoundException;
|
||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.ProtocolDecoder;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Queue;
|
||||
|
||||
public class ClientMsgDecoder implements ProtocolDecoder {
|
||||
private NightTrainProtocol.NTtBCommands protocol;
|
||||
private NightTrainProtocol protocol;
|
||||
|
||||
@Override
|
||||
public String decodeMsg(String msg) {
|
||||
//TODO this method IS NOT FINNISHED. @return is not correct as of now!
|
||||
public NTtBFormatMsg decodeMsg(String msg) {
|
||||
List<String> msgTokens = tokenizeMsg(msg); //List where we'll put the string tokens seperated by $.
|
||||
String cmd; //The command token
|
||||
NightTrainProtocol.NTtBCommands cmdObject;
|
||||
Queue<String> parameters;
|
||||
NTtBFormatMsg util = new NTtBFormatMsg();
|
||||
cmd = serverResponseBuilder(msgTokens);
|
||||
cmdObject = getCommandConstant(cmd);
|
||||
util.setCommand(cmdObject);
|
||||
try{
|
||||
cmd = getCommand(msgTokens);
|
||||
cmd = getCommandStringToken(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 new NTtBFormatMsg("ERROR$NoCommandTokenException caught!", null, null);
|
||||
}
|
||||
|
||||
return null;
|
||||
@ -29,12 +40,33 @@ public class ClientMsgDecoder implements ProtocolDecoder {
|
||||
* to client
|
||||
*/
|
||||
private String serverResponseBuilder(List<String> msgTokens){
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//assumes not empty list!
|
||||
NightTrainProtocol.NTtBCommands cmd = getCommandConstant(msgTokens.get(0));
|
||||
sb.append("Server msg: ");
|
||||
sb.append("Command *" + cmd.toString() + "* recieved");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getCommand(List<String> msgTokens) throws NoCommandTokenException {
|
||||
//Uses the NightTrainProtocol classes utility method
|
||||
private boolean isLegalCmdString(String cmd) {
|
||||
return protocol.isLegalCmdString(cmd);
|
||||
}
|
||||
private String getCommandStringToken(List<String> msgTokens) throws NoCommandTokenException {
|
||||
return msgTokens.get(0);
|
||||
}
|
||||
private NightTrainProtocol.NTtBCommands getCommandConstant(String stringToken) {
|
||||
try{
|
||||
return protocol.getCmdEnumObject(stringToken);
|
||||
}catch (NoLegalProtocolCommandStringFoundException e) {
|
||||
e.printStackTrace();
|
||||
e.getMessage();
|
||||
} finally {
|
||||
return NightTrainProtocol.NTtBCommands.SEROR;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Creates tokens from the clientMsg and puts them in a list
|
||||
private List<String> tokenizeMsg(String msg) {
|
||||
@ -45,7 +77,7 @@ public class ClientMsgDecoder implements ProtocolDecoder {
|
||||
* This method should implement the initiation
|
||||
* of server agency according to client msg
|
||||
*/
|
||||
private @interface serverActionBuilder {
|
||||
//TODO implement what should happen server side(vote/chat/quit etc)
|
||||
private Queue<String> serverActionBuilder() {
|
||||
return new LinkedList<String>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
||||
|
||||
public class InSessionLogik {
|
||||
Server server;
|
||||
public InSessionLogik(Server server) {
|
||||
this.server = server;
|
||||
}
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
||||
|
||||
public class sessionLogik {
|
||||
}
|
||||
Reference in New Issue
Block a user