Fixed InputToProtocolMap to now contain a encoding map from client input to protocol msg and a set of legal client inputs.

This commit is contained in:
Sebastian Lenzlinger 2022-03-26 10:53:22 +01:00
parent 3f05121925
commit 8f0ccbfa36
25 changed files with 62 additions and 51 deletions

View File

@ -1,8 +1,6 @@
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler;
import java.net.Socket;
import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
public class GhostPlayer extends Ghost{

View File

@ -1,8 +1,6 @@
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler;
import java.net.Socket;
import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
public class HumanPlayer extends Human{
/**

View File

@ -1,8 +1,6 @@
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler;
import java.net.Socket;
import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
public class Passenger {
protected int position; //the player's Cabin number (0 to 5)

View File

@ -1,16 +0,0 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NightTrainProtocol;
import java.util.HashMap;
public class InputToProtocolMap extends HashMap<String, NightTrainProtocol.NTtBCommands> {
public InputToProtocolMap(){
super();
this.put("chat", NightTrainProtocol.NTtBCommands.CHATA);
this.put("cn", NightTrainProtocol.NTtBCommands.CUSRN);
this.put("list", NightTrainProtocol.NTtBCommands.LISTP);
this.put("exit", NightTrainProtocol.NTtBCommands.LEAVG);
//TODO extend according to extended function
}
}

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
import java.net.Socket;
import java.io.*;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
public class EmptyClientInputException extends Exception {
String exceptionMsg;

View File

@ -0,0 +1,33 @@
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
import ch.unibas.dmi.dbis.cs108.multiplayer.protocol.NightTrainProtocol;
import java.util.HashMap;
import java.util.HashSet;
public class InputToProtocolMap {
private static final HashMap<String, NightTrainProtocol.NTtBCommands> encoding;
private static final HashSet<String> legalClientInput;
static {
//First add all legal commands to a map
HashMap<String, NightTrainProtocol.NTtBCommands> builder = new HashMap<>();
builder.put("chat", NightTrainProtocol.NTtBCommands.CHATA);
builder.put("cn", NightTrainProtocol.NTtBCommands.CUSRN);
builder.put("list", NightTrainProtocol.NTtBCommands.LISTP);
builder.put("exit", NightTrainProtocol.NTtBCommands.LEAVG);
//TODO extend according to extended function
//Initialize static final map and set
legalClientInput = new HashSet<>(builder.keySet());
encoding = new HashMap<>(builder);
}
public static String encode(String toEncode) {
if (legalClientInput.contains(toEncode)) {
return encoding.get(toEncode).toString();
}
}
}

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
import java.util.ArrayList;
import java.util.Scanner;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
public interface ProtocolParser {
/**

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.helpers;
package ch.unibas.dmi.dbis.cs108.multiplayer.helpers;
import java.io.BufferedWriter;
import java.io.IOException;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.helpers;
package ch.unibas.dmi.dbis.cs108.multiplayer.helpers;
import java.io.BufferedWriter;
import java.io.IOException;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
import java.util.LinkedList;
import java.util.Queue;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
public interface NTtBInputType {
String msg = null;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
public class NTtBParameter implements NTtBInputType {
String parameterValue;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
import java.util.HashMap;
import java.util.HashSet;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
public class NoLegalProtocolCommandStringFoundException extends Exception {
}

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
public interface ProtocolDecoder {

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
import java.util.EnumSet;
import java.util.HashSet;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
import java.io.*;
import java.net.Socket;

View File

@ -1,9 +1,9 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
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 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;
@ -43,10 +43,10 @@ public class ClientMsgDecoder implements ProtocolDecoder {
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");
sb.append("SERVER: ");
sb.append("Command *" + cmd.toString() + "* recieved!");
return null;
return sb.toString();
}
//Uses the NightTrainProtocol classes utility method

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
public class InSessionLogik {
Server server;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
public class NoCommandTokenException extends Exception {

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
import java.io.*;
import java.net.ServerSocket;

View File

@ -1,4 +1,4 @@
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
/**
* Implements the communication protocol in the connecting phase.