diff --git a/.gitattributes b/.gitattributes index 47e507e727a..59f27d1e79b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14323,21 +14323,22 @@ src/main/java/forge/net/client/state/InLobbyClientState.java -text src/main/java/forge/net/client/state/UnauthorizedClientState.java -text src/main/java/forge/net/client/state/package-info.java -text src/main/java/forge/net/package-info.java -text -src/main/java/forge/net/protocol/incoming/AuthorizePacket.java -text -src/main/java/forge/net/protocol/incoming/ChatPacket.java -text -src/main/java/forge/net/protocol/incoming/EchoPacket.java -text -src/main/java/forge/net/protocol/incoming/IPacket.java -text -src/main/java/forge/net/protocol/incoming/IncorrectPacket.java -text -src/main/java/forge/net/protocol/incoming/PacketOpcode.java -text -src/main/java/forge/net/protocol/incoming/UnknownPacket.java -text -src/main/java/forge/net/protocol/incoming/package-info.java -text -src/main/java/forge/net/protocol/outcoming/AuthorizationSuccessfulMessage.java -text -src/main/java/forge/net/protocol/outcoming/ChatMessage.java -text -src/main/java/forge/net/protocol/outcoming/EchoMessage.java -text -src/main/java/forge/net/protocol/outcoming/IMessage.java -text -src/main/java/forge/net/protocol/outcoming/IncorrectPacketMessage.java -text -src/main/java/forge/net/protocol/outcoming/UnknownPacketMessage.java -text +src/main/java/forge/net/protocol/ClientProtocol.java -text +src/main/java/forge/net/protocol/ClientProtocolJson.java -text src/main/java/forge/net/protocol/package-info.java -text +src/main/java/forge/net/protocol/toclient/AuthResultPacketClt.java -text +src/main/java/forge/net/protocol/toclient/ChatPacketClt.java -text +src/main/java/forge/net/protocol/toclient/EchoPacketClt.java -text +src/main/java/forge/net/protocol/toclient/ErrorIncorrectPacketClt.java -text +src/main/java/forge/net/protocol/toclient/ErrorUnknownPacketClt.java -text +src/main/java/forge/net/protocol/toclient/IPacketClt.java -text +src/main/java/forge/net/protocol/toserver/AuthorizePacketSrv.java -text +src/main/java/forge/net/protocol/toserver/ChatPacketSrv.java -text +src/main/java/forge/net/protocol/toserver/EchoPacketSrv.java -text +src/main/java/forge/net/protocol/toserver/IPacketSrv.java -text +src/main/java/forge/net/protocol/toserver/IncorrectPacketSrv.java -text +src/main/java/forge/net/protocol/toserver/UnknownPacketSrv.java -text +src/main/java/forge/net/protocol/toserver/package-info.java -text src/main/java/forge/package-info.java svneol=native#text/plain src/main/java/forge/properties/ForgePreferences.java svneol=native#text/plain src/main/java/forge/properties/NewConstants.java svneol=native#text/plain diff --git a/pom.xml b/pom.xml index 056ae556679..9b1469108e0 100644 --- a/pom.xml +++ b/pom.xml @@ -701,6 +701,11 @@ guava 13.0.1 + + com.google.code.gson + gson + 2.2.3 + com.thoughtworks.xstream xstream diff --git a/src/main/java/forge/game/player/LobbyPlayerRemote.java b/src/main/java/forge/game/player/LobbyPlayerRemote.java index 5d704bfc6ae..65531e41b7a 100644 --- a/src/main/java/forge/game/player/LobbyPlayerRemote.java +++ b/src/main/java/forge/game/player/LobbyPlayerRemote.java @@ -4,7 +4,7 @@ import org.apache.commons.lang.NotImplementedException; import forge.game.GameState; import forge.net.client.INetClient; -import forge.net.protocol.outcoming.ChatMessage; +import forge.net.protocol.toclient.ChatPacketClt; public class LobbyPlayerRemote extends LobbyPlayer { @@ -31,6 +31,6 @@ public class LobbyPlayerRemote extends LobbyPlayer { @Override public void hear(LobbyPlayer player, String message) { - connection.send(new ChatMessage(player.getName(), message)); + connection.send(new ChatPacketClt(player.getName(), message)); } } \ No newline at end of file diff --git a/src/main/java/forge/net/client/INetClient.java b/src/main/java/forge/net/client/INetClient.java index 46798a53c54..4140fd3642e 100644 --- a/src/main/java/forge/net/client/INetClient.java +++ b/src/main/java/forge/net/client/INetClient.java @@ -2,7 +2,7 @@ package forge.net.client; import forge.game.player.LobbyPlayer; import forge.net.client.state.IClientState; -import forge.net.protocol.outcoming.IMessage; +import forge.net.protocol.toclient.IPacketClt; /** * TODO: Write javadoc for this type. @@ -14,7 +14,7 @@ public interface INetClient { * TODO: Write javadoc for this method. * @param echoMessage */ - void send(IMessage message); + void send(IPacketClt message); void createPlayer(String playerName); diff --git a/src/main/java/forge/net/client/NetClient.java b/src/main/java/forge/net/client/NetClient.java index 9aa28373669..11c8508eb93 100644 --- a/src/main/java/forge/net/client/NetClient.java +++ b/src/main/java/forge/net/client/NetClient.java @@ -10,20 +10,24 @@ import forge.net.IConnectionObserver; import forge.net.client.state.ConnectedClientState; import forge.net.client.state.UnauthorizedClientState; import forge.net.client.state.IClientState; -import forge.net.protocol.incoming.IPacket; -import forge.net.protocol.incoming.PacketOpcode; -import forge.net.protocol.outcoming.IMessage; +import forge.net.protocol.ClientProtocol; +import forge.net.protocol.ClientProtocolJson; +import forge.net.protocol.toclient.IPacketClt; +import forge.net.protocol.toserver.IPacketSrv; public class NetClient implements IConnectionObserver, INetClient{ private final IClientSocket socket; - private BlockingDeque state = new LinkedBlockingDeque(); + private final BlockingDeque state = new LinkedBlockingDeque(); private LobbyPlayer player = null; + private final ClientProtocol protocol; + public NetClient(IClientSocket clientSocket) { socket = clientSocket; state.push(new ConnectedClientState(this)); state.push(new UnauthorizedClientState(this)); + protocol = new ClientProtocolJson(); } public void autorized() { @@ -48,7 +52,7 @@ public class NetClient implements IConnectionObserver, INetClient{ /** Receives input from network client */ @Override public void onMessage(String data) { - IPacket p = PacketOpcode.decode(data); + IPacketSrv p = protocol.decodePacket(data); for(IClientState s : state) { if ( s.processPacket(p) ) break; @@ -57,8 +61,9 @@ public class NetClient implements IConnectionObserver, INetClient{ @Override - public void send(IMessage message) { - socket.send(message.toNetString()); + public void send(IPacketClt message) { + String rawData = protocol.encodePacket(message); + socket.send(rawData); } /* (non-Javadoc) diff --git a/src/main/java/forge/net/client/state/ConnectedClientState.java b/src/main/java/forge/net/client/state/ConnectedClientState.java index 91b4abbc7ea..7336ac4f5a3 100644 --- a/src/main/java/forge/net/client/state/ConnectedClientState.java +++ b/src/main/java/forge/net/client/state/ConnectedClientState.java @@ -1,12 +1,12 @@ package forge.net.client.state; import forge.net.client.INetClient; -import forge.net.protocol.incoming.EchoPacket; -import forge.net.protocol.incoming.IncorrectPacket; -import forge.net.protocol.incoming.IPacket; -import forge.net.protocol.outcoming.EchoMessage; -import forge.net.protocol.outcoming.IncorrectPacketMessage; -import forge.net.protocol.outcoming.UnknownPacketMessage; +import forge.net.protocol.toclient.EchoPacketClt; +import forge.net.protocol.toclient.ErrorIncorrectPacketClt; +import forge.net.protocol.toclient.ErrorUnknownPacketClt; +import forge.net.protocol.toserver.EchoPacketSrv; +import forge.net.protocol.toserver.IPacketSrv; +import forge.net.protocol.toserver.IncorrectPacketSrv; @@ -19,22 +19,20 @@ public class ConnectedClientState implements IClientState { } @Override - public boolean processPacket(IPacket packet ) { - switch( packet.getOpCode() ) { - case Echo: - EchoPacket pe = (EchoPacket)packet; - client.send(new EchoMessage(pe.getMessage())); - return true; - - case Incorrect: - IncorrectPacket pi = (IncorrectPacket)packet; - client.send(new IncorrectPacketMessage(pi)); - return true; - - default: - client.send(new UnknownPacketMessage()); - return true; + public boolean processPacket(IPacketSrv packet ) { + if( packet instanceof EchoPacketSrv) { + EchoPacketSrv pe = (EchoPacketSrv)packet; + client.send(new EchoPacketClt(pe.getMessage())); + return true; } + if( packet instanceof IncorrectPacketSrv) { + IncorrectPacketSrv pi = (IncorrectPacketSrv)packet; + client.send(new ErrorIncorrectPacketClt(pi.getMessage())); + return true; + } + + client.send(new ErrorUnknownPacketClt()); + return true; } } diff --git a/src/main/java/forge/net/client/state/IClientState.java b/src/main/java/forge/net/client/state/IClientState.java index f200743f362..3a65cdbfeb1 100644 --- a/src/main/java/forge/net/client/state/IClientState.java +++ b/src/main/java/forge/net/client/state/IClientState.java @@ -1,11 +1,11 @@ package forge.net.client.state; -import forge.net.protocol.incoming.IPacket; +import forge.net.protocol.toserver.IPacketSrv; /** * TODO: Write javadoc for this type. * */ public interface IClientState { - boolean processPacket(IPacket data); + boolean processPacket(IPacketSrv data); } diff --git a/src/main/java/forge/net/client/state/InLobbyClientState.java b/src/main/java/forge/net/client/state/InLobbyClientState.java index 75fe7e01043..306f7046037 100644 --- a/src/main/java/forge/net/client/state/InLobbyClientState.java +++ b/src/main/java/forge/net/client/state/InLobbyClientState.java @@ -3,9 +3,8 @@ package forge.net.client.state; import forge.Singletons; import forge.control.ChatArea; import forge.net.client.INetClient; -import forge.net.protocol.incoming.ChatPacket; -import forge.net.protocol.incoming.IPacket; -import forge.net.protocol.incoming.PacketOpcode; +import forge.net.protocol.toserver.ChatPacketSrv; +import forge.net.protocol.toserver.IPacketSrv; /** * TODO: Write javadoc for this type. @@ -19,10 +18,9 @@ public class InLobbyClientState implements IClientState { } @Override - public boolean processPacket(IPacket data) { - if( data.getOpCode() == PacketOpcode.Chat) - { - ChatPacket cp = (ChatPacket) data; + public boolean processPacket(IPacketSrv data) { + if( data instanceof ChatPacketSrv) { + ChatPacketSrv cp = (ChatPacketSrv) data; // if ( not muted ) Singletons.getControl().getLobby().speak(ChatArea.Room, client.getPlayer(), cp.getMessage()); // else diff --git a/src/main/java/forge/net/client/state/UnauthorizedClientState.java b/src/main/java/forge/net/client/state/UnauthorizedClientState.java index 5cd40ba9294..25309cd94d8 100644 --- a/src/main/java/forge/net/client/state/UnauthorizedClientState.java +++ b/src/main/java/forge/net/client/state/UnauthorizedClientState.java @@ -1,10 +1,9 @@ package forge.net.client.state; import forge.net.client.INetClient; -import forge.net.protocol.incoming.AuthorizePacket; -import forge.net.protocol.incoming.IPacket; -import forge.net.protocol.incoming.PacketOpcode; -import forge.net.protocol.outcoming.AuthorizationSuccessfulMessage; +import forge.net.protocol.toclient.AuthResultPacketClt; +import forge.net.protocol.toserver.AuthorizePacketSrv; +import forge.net.protocol.toserver.IPacketSrv; /** * TODO: Write javadoc for this type. @@ -23,11 +22,11 @@ public class UnauthorizedClientState implements IClientState { @Override - public boolean processPacket(IPacket packet) { - if( packet.getOpCode() == PacketOpcode.Authorize ) { - AuthorizePacket p = (AuthorizePacket)packet; + public boolean processPacket(IPacketSrv packet) { + if( packet instanceof AuthorizePacketSrv ) { + AuthorizePacketSrv p = (AuthorizePacketSrv)packet; if( true ) { // check credentials here! - client.send(new AuthorizationSuccessfulMessage(p.getUsername())); + client.send(new AuthResultPacketClt(p.getUsername(), true)); client.createPlayer(p.getUsername()); diff --git a/src/main/java/forge/net/protocol/ClientProtocol.java b/src/main/java/forge/net/protocol/ClientProtocol.java new file mode 100644 index 00000000000..54df742267a --- /dev/null +++ b/src/main/java/forge/net/protocol/ClientProtocol.java @@ -0,0 +1,9 @@ +package forge.net.protocol; + + +/** The protocol is in charge of serialization of internal classes into whatever remote client understands. + * Descendants may use different techniques to serialize data, be it Gson, ProtoBuf or common Java serialization */ +public interface ClientProtocol { + TIncoming decodePacket(String data); + String encodePacket(TOutComing packet); +} \ No newline at end of file diff --git a/src/main/java/forge/net/protocol/ClientProtocolJson.java b/src/main/java/forge/net/protocol/ClientProtocolJson.java new file mode 100644 index 00000000000..75e436f52bb --- /dev/null +++ b/src/main/java/forge/net/protocol/ClientProtocolJson.java @@ -0,0 +1,82 @@ +package forge.net.protocol; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import com.google.gson.Gson; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSyntaxException; + +import forge.net.protocol.toclient.AuthResultPacketClt; +import forge.net.protocol.toclient.ChatPacketClt; +import forge.net.protocol.toclient.EchoPacketClt; +import forge.net.protocol.toclient.ErrorIncorrectPacketClt; +import forge.net.protocol.toclient.ErrorUnknownPacketClt; +import forge.net.protocol.toclient.IPacketClt; +import forge.net.protocol.toserver.AuthorizePacketSrv; +import forge.net.protocol.toserver.ChatPacketSrv; +import forge.net.protocol.toserver.EchoPacketSrv; +import forge.net.protocol.toserver.IPacketSrv; +import forge.net.protocol.toserver.IncorrectPacketSrv; +import forge.net.protocol.toserver.UnknownPacketSrv; +import forge.util.TextUtil; + +/** + * The expected incoming message format is: /{opcode} {json-object}, where opcode is a string among keys of headerToClassInbound + * If string starts with a non-slash character, the whole line is considered a chat packet + * + */ +public class ClientProtocolJson implements ClientProtocol { + private final static Map> headerToClassInbound = new HashMap>(); + private final static Map, String> classToHeaderOutbound = new HashMap, String>(); + + // Static ctor to fill maps + static { + // The what remote part sends us + headerToClassInbound.put("echo", EchoPacketSrv.class); + headerToClassInbound.put("s", ChatPacketSrv.class); + headerToClassInbound.put("auth", AuthorizePacketSrv.class); + + // The what we reply there + classToHeaderOutbound.put(AuthResultPacketClt.class, "auth"); + classToHeaderOutbound.put(ChatPacketClt.class, "s"); + classToHeaderOutbound.put(EchoPacketClt.class, "echo"); + classToHeaderOutbound.put(ErrorIncorrectPacketClt.class, "err:packet_args"); + classToHeaderOutbound.put(ErrorUnknownPacketClt.class, "err:packet"); + } + + private final Gson gson = new Gson(); // looks like a single instance per class is enough + + @Override + public IPacketSrv decodePacket(String data) { + if ( '/' != data.charAt(0) ) + return new ChatPacketSrv(data); + + data = data.substring(1); + String[] parts = TextUtil.split(data, ' ', 2); + + Class packetClass = headerToClassInbound.get(parts[0]); + if( null == packetClass ) + return new IncorrectPacketSrv("Unknown header: " + parts[0]); + + String args = parts.length > 1 ? parts[1] : null; + if ( StringUtils.isBlank(args) ) + args = "{}"; // assume default empty object + + try { + return gson.fromJson(parts[1].trim(), packetClass); + } catch( JsonParseException ex ) { + return new IncorrectPacketSrv("Invalid json: " + args); + } + } + + @Override + public String encodePacket(IPacketClt packet) { + Class packetClass = packet.getClass(); + String prefix = classToHeaderOutbound.get(packetClass); + return String.format("%s %s", prefix != null ? prefix : "/!unserialized!: " + packetClass.getName(), gson.toJson(packet)); + } + +} diff --git a/src/main/java/forge/net/protocol/incoming/AuthorizePacket.java b/src/main/java/forge/net/protocol/incoming/AuthorizePacket.java deleted file mode 100644 index 46c3b0e1273..00000000000 --- a/src/main/java/forge/net/protocol/incoming/AuthorizePacket.java +++ /dev/null @@ -1,50 +0,0 @@ -package forge.net.protocol.incoming; - -import org.apache.commons.lang3.StringUtils; - -import forge.util.TextUtil; - -/** - * TODO: Write javadoc for this type. - * - */ -public class AuthorizePacket implements IPacket { - private final String username; - private final String password; - - private AuthorizePacket(String name, String pass) { - username = name; - password = pass; - } - - public String getUsername() { - return username; - } - - public String getPassword() { - return password; - } - - - public static IPacket parse(String data) { - String[] parts = TextUtil.splitWithParenthesis(data, ' ', '\"', '\"'); - if(parts.length == 1 || parts.length == 2) { - if(!StringUtils.isAlphanumericSpace(parts[0])) - return new IncorrectPacket(PacketOpcode.Authorize, 0, parts[0]); - if( parts.length == 1) - return new AuthorizePacket(parts[0], null); - - if(!StringUtils.isAsciiPrintable(parts[1])) - return new IncorrectPacket(PacketOpcode.Authorize, 1, parts[1]); - else - return new AuthorizePacket(parts[0], parts[1]); - } - return UnknownPacket.parse(data); - } - - @Override - public PacketOpcode getOpCode() { - return PacketOpcode.Authorize; - } - -} diff --git a/src/main/java/forge/net/protocol/incoming/ChatPacket.java b/src/main/java/forge/net/protocol/incoming/ChatPacket.java deleted file mode 100644 index 7dc7db24210..00000000000 --- a/src/main/java/forge/net/protocol/incoming/ChatPacket.java +++ /dev/null @@ -1,23 +0,0 @@ -package forge.net.protocol.incoming; - - -/** - * TODO: Write javadoc for this type. - * - */ -public class ChatPacket implements IPacket { - private final String message; - public ChatPacket(String data) { - message = data; - } - public String getMessage() { - return message; - } - - @Override - public PacketOpcode getOpCode() { - return PacketOpcode.Chat; - } - - -} diff --git a/src/main/java/forge/net/protocol/incoming/EchoPacket.java b/src/main/java/forge/net/protocol/incoming/EchoPacket.java deleted file mode 100644 index 7bb14e314bb..00000000000 --- a/src/main/java/forge/net/protocol/incoming/EchoPacket.java +++ /dev/null @@ -1,28 +0,0 @@ -package forge.net.protocol.incoming; - - -/** - * TODO: Write javadoc for this type. - * - */ -public class EchoPacket implements IPacket { - - private final String message; - private EchoPacket(String data) { - message = data; - } - - public static EchoPacket parse(String data) { - return new EchoPacket(data); - } - - public String getMessage() { - return message; - } - - @Override - public PacketOpcode getOpCode() { - return PacketOpcode.Echo; - } - -} diff --git a/src/main/java/forge/net/protocol/incoming/IPacket.java b/src/main/java/forge/net/protocol/incoming/IPacket.java deleted file mode 100644 index 1e77554e879..00000000000 --- a/src/main/java/forge/net/protocol/incoming/IPacket.java +++ /dev/null @@ -1,10 +0,0 @@ -package forge.net.protocol.incoming; - - -/** - * TODO: Write javadoc for this type. - * - */ -public interface IPacket { - PacketOpcode getOpCode(); -} diff --git a/src/main/java/forge/net/protocol/incoming/IncorrectPacket.java b/src/main/java/forge/net/protocol/incoming/IncorrectPacket.java deleted file mode 100644 index 6f2beedf17e..00000000000 --- a/src/main/java/forge/net/protocol/incoming/IncorrectPacket.java +++ /dev/null @@ -1,36 +0,0 @@ -package forge.net.protocol.incoming; - -/** - * TODO: Write javadoc for this type. - * - */ -public class IncorrectPacket implements IPacket { - - private final PacketOpcode intendedCode; - private final int index; - private final String sParam; - - public IncorrectPacket(PacketOpcode code, int iParameter, String value) { - intendedCode = code; - index = iParameter; - sParam = value; - } - - public String getString() { - return sParam; - } - - public int getIndex() { - return index; - } - - public PacketOpcode getIntendedCode() { - return intendedCode; - } - - @Override - public PacketOpcode getOpCode() { - return PacketOpcode.Incorrect; - } - -} diff --git a/src/main/java/forge/net/protocol/incoming/PacketOpcode.java b/src/main/java/forge/net/protocol/incoming/PacketOpcode.java deleted file mode 100644 index 656cdce45ee..00000000000 --- a/src/main/java/forge/net/protocol/incoming/PacketOpcode.java +++ /dev/null @@ -1,53 +0,0 @@ -package forge.net.protocol.incoming; - - -/** - * TODO: Write javadoc for this type. - * - */ -public enum PacketOpcode { - Echo("/echo"), - Chat("/s"), - Authorize("/auth"), - - Incorrect(null), - Unknown(null); - - - - private final String opcode; - - private PacketOpcode(String code) { - opcode = code; - } - - public final String getOpcode() { - return opcode; - } - - /** - * TODO: Write javadoc for this method. - * @param data - * @return - */ - public static IPacket decode(String data) { - for(PacketOpcode s : PacketOpcode.values()) { - if ( s.opcode != null && data.startsWith(s.opcode) ) - return decodePacket(s, data.substring(s.opcode.length()).trim()); - } - if( data.startsWith("/") ) - return UnknownPacket.parse(data.substring(1)); - else - return new ChatPacket(data); - } - - - private static IPacket decodePacket(PacketOpcode code, String data) { - switch(code) { - case Echo: return EchoPacket.parse(data); - case Authorize: return AuthorizePacket.parse(data); - - default: return UnknownPacket.parse(data); - } - } -} diff --git a/src/main/java/forge/net/protocol/incoming/UnknownPacket.java b/src/main/java/forge/net/protocol/incoming/UnknownPacket.java deleted file mode 100644 index 046029868a4..00000000000 --- a/src/main/java/forge/net/protocol/incoming/UnknownPacket.java +++ /dev/null @@ -1,32 +0,0 @@ -package forge.net.protocol.incoming; - - -/** - * TODO: Write javadoc for this type. - * - */ -public class UnknownPacket implements IPacket { - - private final String message; - private UnknownPacket(String data) { - message = data; - } - public String getMessage() { - return message; - } - /** - * TODO: Write javadoc for this method. - * @param substring - * @return - */ - public static IPacket parse(String substring) { - return new UnknownPacket(substring); - } - - @Override - public PacketOpcode getOpCode() { - return PacketOpcode.Unknown; - } - - -} diff --git a/src/main/java/forge/net/protocol/outcoming/AuthorizationSuccessfulMessage.java b/src/main/java/forge/net/protocol/outcoming/AuthorizationSuccessfulMessage.java deleted file mode 100644 index 22ae896f133..00000000000 --- a/src/main/java/forge/net/protocol/outcoming/AuthorizationSuccessfulMessage.java +++ /dev/null @@ -1,21 +0,0 @@ -package forge.net.protocol.outcoming; - -/** - * TODO: Write javadoc for this type. - * - */ -public class AuthorizationSuccessfulMessage implements IMessage { - - private final String username; - - public AuthorizationSuccessfulMessage(String user) { - username = user; - } - - @Override - public String toNetString() { - // TODO Auto-generated method stub - return "Authorization Successful. Welcome, " + username; - } - -} diff --git a/src/main/java/forge/net/protocol/outcoming/ChatMessage.java b/src/main/java/forge/net/protocol/outcoming/ChatMessage.java deleted file mode 100644 index aea189e2134..00000000000 --- a/src/main/java/forge/net/protocol/outcoming/ChatMessage.java +++ /dev/null @@ -1,24 +0,0 @@ -package forge.net.protocol.outcoming; - -/** - * TODO: Write javadoc for this type. - * - */ -public class ChatMessage implements IMessage { - - private final String player; - private final String message; - - public ChatMessage(String playerName, String message) { - // TODO Auto-generated constructor stub - this.message = message; - this.player = playerName; - } - - @Override - public String toNetString() { - // TODO Auto-generated method stub - return String.format("%s: %s", player, message); - } - -} diff --git a/src/main/java/forge/net/protocol/outcoming/EchoMessage.java b/src/main/java/forge/net/protocol/outcoming/EchoMessage.java deleted file mode 100644 index 915c9594eb2..00000000000 --- a/src/main/java/forge/net/protocol/outcoming/EchoMessage.java +++ /dev/null @@ -1,26 +0,0 @@ -package forge.net.protocol.outcoming; - -/** - * TODO: Write javadoc for this type. - * - */ -public class EchoMessage implements IMessage { - - private final String message; - - - /** - * TODO: Write javadoc for Constructor. - * @param message2 - */ - public EchoMessage(String message) { - this.message = message; - } - - - @Override - public String toNetString() { - return String.format("Echo: %s", message); - } - -} diff --git a/src/main/java/forge/net/protocol/outcoming/IMessage.java b/src/main/java/forge/net/protocol/outcoming/IMessage.java deleted file mode 100644 index deaba591a45..00000000000 --- a/src/main/java/forge/net/protocol/outcoming/IMessage.java +++ /dev/null @@ -1,9 +0,0 @@ -package forge.net.protocol.outcoming; - -/** - * TODO: Write javadoc for this type. - * - */ -public interface IMessage { - public String toNetString(); -} diff --git a/src/main/java/forge/net/protocol/outcoming/IncorrectPacketMessage.java b/src/main/java/forge/net/protocol/outcoming/IncorrectPacketMessage.java deleted file mode 100644 index 065bff4013e..00000000000 --- a/src/main/java/forge/net/protocol/outcoming/IncorrectPacketMessage.java +++ /dev/null @@ -1,18 +0,0 @@ -package forge.net.protocol.outcoming; - -import forge.net.protocol.incoming.IncorrectPacket; - - -public class IncorrectPacketMessage implements IMessage { - - IncorrectPacket badPacket; - public IncorrectPacketMessage(IncorrectPacket packet) { - badPacket = packet; - } - - @Override - public String toNetString() { - return String.format("Wrong syntax for %s command: parameter #%d is %s", badPacket.getIntendedCode().getOpcode(), 1+badPacket.getIndex(), badPacket.getString()); - } - -} diff --git a/src/main/java/forge/net/protocol/outcoming/UnknownPacketMessage.java b/src/main/java/forge/net/protocol/outcoming/UnknownPacketMessage.java deleted file mode 100644 index da4b0a7562f..00000000000 --- a/src/main/java/forge/net/protocol/outcoming/UnknownPacketMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package forge.net.protocol.outcoming; - -/** - * TODO: Write javadoc for this type. - * - */ -public class UnknownPacketMessage implements IMessage { - - /* (non-Javadoc) - * @see forge.net.protocol.outcoming.Message#toNetString() - */ - @Override - public String toNetString() { - return "Unkown packet received"; - } - -} diff --git a/src/main/java/forge/net/protocol/toclient/AuthResultPacketClt.java b/src/main/java/forge/net/protocol/toclient/AuthResultPacketClt.java new file mode 100644 index 00000000000..8f201b563c2 --- /dev/null +++ b/src/main/java/forge/net/protocol/toclient/AuthResultPacketClt.java @@ -0,0 +1,23 @@ +package forge.net.protocol.toclient; + +/** + * TODO: Write javadoc for this type. + * + */ +public class AuthResultPacketClt implements IPacketClt { + private final boolean successful; + private final String username; + + public AuthResultPacketClt(String user, boolean success) { + username = user; + successful = success; + } + + public boolean isSuccessful() { + return successful; + } + + public String getUsername() { + return username; + } +} diff --git a/src/main/java/forge/net/protocol/toclient/ChatPacketClt.java b/src/main/java/forge/net/protocol/toclient/ChatPacketClt.java new file mode 100644 index 00000000000..e503f555a05 --- /dev/null +++ b/src/main/java/forge/net/protocol/toclient/ChatPacketClt.java @@ -0,0 +1,25 @@ +package forge.net.protocol.toclient; + +/** + * TODO: Write javadoc for this type. + * + */ +public class ChatPacketClt implements IPacketClt { + + private final String actor; + private final String message; + + public ChatPacketClt(String playerName, String message) { + // TODO Auto-generated constructor stub + this.message = message; + this.actor = playerName; + } + + public String getActor() { + return actor; + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/forge/net/protocol/toclient/EchoPacketClt.java b/src/main/java/forge/net/protocol/toclient/EchoPacketClt.java new file mode 100644 index 00000000000..396f3f29724 --- /dev/null +++ b/src/main/java/forge/net/protocol/toclient/EchoPacketClt.java @@ -0,0 +1,24 @@ +package forge.net.protocol.toclient; + +/** + * TODO: Write javadoc for this type. + * + */ +public class EchoPacketClt implements IPacketClt { + + private final String message; + + + /** + * TODO: Write javadoc for Constructor. + * @param message2 + */ + public EchoPacketClt(String message) { + this.message = message; + } + + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/forge/net/protocol/toclient/ErrorIncorrectPacketClt.java b/src/main/java/forge/net/protocol/toclient/ErrorIncorrectPacketClt.java new file mode 100644 index 00000000000..37c47a332cf --- /dev/null +++ b/src/main/java/forge/net/protocol/toclient/ErrorIncorrectPacketClt.java @@ -0,0 +1,17 @@ +package forge.net.protocol.toclient; + +/** + * A response packet to an Incorrect packet client had sent to server + */ +public class ErrorIncorrectPacketClt implements IPacketClt { + + private final String message; + + public ErrorIncorrectPacketClt(String msg) { + message = msg; + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/forge/net/protocol/toclient/ErrorUnknownPacketClt.java b/src/main/java/forge/net/protocol/toclient/ErrorUnknownPacketClt.java new file mode 100644 index 00000000000..f7a4a9b717e --- /dev/null +++ b/src/main/java/forge/net/protocol/toclient/ErrorUnknownPacketClt.java @@ -0,0 +1,11 @@ +package forge.net.protocol.toclient; + +/** + * TODO: Write javadoc for this type. + * + */ +public class ErrorUnknownPacketClt implements IPacketClt { + + + +} diff --git a/src/main/java/forge/net/protocol/toclient/IPacketClt.java b/src/main/java/forge/net/protocol/toclient/IPacketClt.java new file mode 100644 index 00000000000..c20946d0772 --- /dev/null +++ b/src/main/java/forge/net/protocol/toclient/IPacketClt.java @@ -0,0 +1,8 @@ +package forge.net.protocol.toclient; + +/** + * TODO: Write javadoc for this type. + * + */ +public interface IPacketClt { +} diff --git a/src/main/java/forge/net/protocol/toserver/AuthorizePacketSrv.java b/src/main/java/forge/net/protocol/toserver/AuthorizePacketSrv.java new file mode 100644 index 00000000000..c424b0f70a6 --- /dev/null +++ b/src/main/java/forge/net/protocol/toserver/AuthorizePacketSrv.java @@ -0,0 +1,24 @@ +package forge.net.protocol.toserver; + +/** + * TODO: Write javadoc for this type. + * + */ +public class AuthorizePacketSrv implements IPacketSrv { + private final String username; + private final String password; + + private AuthorizePacketSrv(String name, String pass) { + username = name; + password = pass; + } + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + +} diff --git a/src/main/java/forge/net/protocol/toserver/ChatPacketSrv.java b/src/main/java/forge/net/protocol/toserver/ChatPacketSrv.java new file mode 100644 index 00000000000..1846b6c1a5d --- /dev/null +++ b/src/main/java/forge/net/protocol/toserver/ChatPacketSrv.java @@ -0,0 +1,16 @@ +package forge.net.protocol.toserver; + + +/** + * TODO: Write javadoc for this type. + * + */ +public class ChatPacketSrv implements IPacketSrv { + private final String message; + public ChatPacketSrv(String data) { + message = data; + } + public String getMessage() { + return message; + } +} diff --git a/src/main/java/forge/net/protocol/toserver/EchoPacketSrv.java b/src/main/java/forge/net/protocol/toserver/EchoPacketSrv.java new file mode 100644 index 00000000000..a51cb23151d --- /dev/null +++ b/src/main/java/forge/net/protocol/toserver/EchoPacketSrv.java @@ -0,0 +1,22 @@ +package forge.net.protocol.toserver; + + +/** + * TODO: Write javadoc for this type. + * + */ +public class EchoPacketSrv implements IPacketSrv { + + private final String message; + private EchoPacketSrv(String data) { + message = data; + } + + public static EchoPacketSrv parse(String data) { + return new EchoPacketSrv(data); + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/forge/net/protocol/toserver/IPacketSrv.java b/src/main/java/forge/net/protocol/toserver/IPacketSrv.java new file mode 100644 index 00000000000..3db7ef901ad --- /dev/null +++ b/src/main/java/forge/net/protocol/toserver/IPacketSrv.java @@ -0,0 +1,5 @@ +package forge.net.protocol.toserver; + + +/** A common ancestor for all packets directed to server */ +public interface IPacketSrv {} \ No newline at end of file diff --git a/src/main/java/forge/net/protocol/toserver/IncorrectPacketSrv.java b/src/main/java/forge/net/protocol/toserver/IncorrectPacketSrv.java new file mode 100644 index 00000000000..995c948c728 --- /dev/null +++ b/src/main/java/forge/net/protocol/toserver/IncorrectPacketSrv.java @@ -0,0 +1,18 @@ +package forge.net.protocol.toserver; + +/** + * TODO: Write javadoc for this type. + * + */ +public class IncorrectPacketSrv implements IPacketSrv { + + private final String message; + + public IncorrectPacketSrv(String errorMessage) { + message = errorMessage; + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/forge/net/protocol/toserver/UnknownPacketSrv.java b/src/main/java/forge/net/protocol/toserver/UnknownPacketSrv.java new file mode 100644 index 00000000000..e5942dc12a3 --- /dev/null +++ b/src/main/java/forge/net/protocol/toserver/UnknownPacketSrv.java @@ -0,0 +1,18 @@ +package forge.net.protocol.toserver; + + +/** + * TODO: Write javadoc for this type. + * + */ +public class UnknownPacketSrv implements IPacketSrv { + + private final String message; + public UnknownPacketSrv(String data) { + message = data; + } + public String getMessage() { + return message; + } + +} diff --git a/src/main/java/forge/net/protocol/incoming/package-info.java b/src/main/java/forge/net/protocol/toserver/package-info.java similarity index 57% rename from src/main/java/forge/net/protocol/incoming/package-info.java rename to src/main/java/forge/net/protocol/toserver/package-info.java index 575936006bb..647c3a50f50 100644 --- a/src/main/java/forge/net/protocol/incoming/package-info.java +++ b/src/main/java/forge/net/protocol/toserver/package-info.java @@ -1,3 +1,3 @@ /** Model (as in model-view-controller) for Forge. */ -package forge.net.protocol.incoming; +package forge.net.protocol.toserver;