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; package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
import java.net.Socket;
public class GhostPlayer extends Ghost{ public class GhostPlayer extends Ghost{

View File

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

View File

@ -1,8 +1,6 @@
package ch.unibas.dmi.dbis.cs108.Klassenstruktur; package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
import java.net.Socket;
public class Passenger { public class Passenger {
protected int position; //the player's Cabin number (0 to 5) 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.net.Socket;
import java.io.*; 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 { public class EmptyClientInputException extends Exception {
String exceptionMsg; 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.ArrayList;
import java.util.Scanner; 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 { 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.BufferedWriter;
import java.io.IOException; 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.BufferedWriter;
import java.io.IOException; 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.LinkedList;
import java.util.Queue; 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 { public interface NTtBInputType {
String msg = null; 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 { public class NTtBParameter implements NTtBInputType {
String parameterValue; 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.HashMap;
import java.util.HashSet; 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 { 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 { 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.EnumSet;
import java.util.HashSet; 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.io.*;
import java.net.Socket; 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.NTtBFormatMsg;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NightTrainProtocol; 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.NoLegalProtocolCommandStringFoundException;
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.ProtocolDecoder; import ch.unibas.dmi.dbis.cs108.multiplayer.protocol.ProtocolDecoder;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -43,10 +43,10 @@ public class ClientMsgDecoder implements ProtocolDecoder {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
//assumes not empty list! //assumes not empty list!
NightTrainProtocol.NTtBCommands cmd = getCommandConstant(msgTokens.get(0)); NightTrainProtocol.NTtBCommands cmd = getCommandConstant(msgTokens.get(0));
sb.append("Server msg: "); sb.append("SERVER: ");
sb.append("Command *" + cmd.toString() + "* recieved"); sb.append("Command *" + cmd.toString() + "* recieved!");
return null; return sb.toString();
} }
//Uses the NightTrainProtocol classes utility method //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 { public class InSessionLogik {
Server server; 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 { 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.io.*;
import java.net.ServerSocket; 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. * Implements the communication protocol in the connecting phase.