diff --git a/ChatApp/src/server/Server.java b/ChatApp/src/server/Server.java index 0652298..5f7144a 100644 --- a/ChatApp/src/server/Server.java +++ b/ChatApp/src/server/Server.java @@ -34,50 +34,52 @@ public class Server implements PacketHandler { public String getRoomName(ServerConnexion connexion) { for (Map.Entry> entry : rooms.entrySet()) { - if(entry.getValue().contains(connexion)) { + if (entry.getValue().contains(connexion)) { return entry.getKey(); } } return null; } - public void createRoom(String roomName, ServerConnexion connexion) throws SocketException { - if(rooms.containsKey(roomName)) { - throw new SocketException("Room already exists"); + public boolean createRoom(String roomName, ServerConnexion connexion) { + if (rooms.containsKey(roomName)) { + return false; } rooms.put(roomName, new ArrayList<>()); rooms.get(roomName).add(connexion); + return true; } - public void leaveRoom(ServerConnexion connexion) throws SocketException { + public boolean leaveRoom(ServerConnexion connexion) { String roomName = getRoomName(connexion); - if(roomName != null) { + if (roomName != null) { rooms.get(roomName).remove(connexion); // Remove the room if it is empty - if(rooms.get(roomName).isEmpty()) { + if (rooms.get(roomName).isEmpty()) { rooms.remove(roomName); } - return; + return true; } - throw new SocketException("Room does not exist"); + return false; } - public void joinRoom(String roomName, ServerConnexion connexion) throws SocketException { - if(rooms.containsKey(roomName) && !rooms.get(roomName).contains(connexion)) { + public boolean joinRoom(String roomName, ServerConnexion connexion) { + if (rooms.containsKey(roomName) && !rooms.get(roomName).contains(connexion)) { rooms.get(roomName).add(connexion); - return; + return true; } - throw new SocketException("Room does not exist"); + return false; } - public void sendToRoom(ServerConnexion connexion, SendChatMessagePacket packet) throws SocketException { + public boolean sendToRoom(ServerConnexion connexion, SendChatMessagePacket packet) { String roomName = getRoomName(connexion); - ChatMessagePacket chatPacket = new ChatMessagePacket(Instant.now(), connexion.getChatterName(), packet.getContent()); - if(roomName != null && rooms.containsKey(roomName)) { + ChatMessagePacket chatPacket = new ChatMessagePacket(Instant.now(), connexion.getChatterName(), + packet.getContent()); + if (roomName != null && rooms.containsKey(roomName)) { rooms.get(roomName).forEach(con -> con.sendPacket(chatPacket)); - return; + return true; } - throw new SocketException("You are not in a room or the room does not exist"); + return false; } public void close() { diff --git a/ChatApp/src/server/ServerConnexion.java b/ChatApp/src/server/ServerConnexion.java index 5e42f94..7b80c91 100644 --- a/ChatApp/src/server/ServerConnexion.java +++ b/ChatApp/src/server/ServerConnexion.java @@ -3,7 +3,6 @@ package server; import java.io.IOException; import java.net.DatagramSocket; import java.net.InetSocketAddress; -import java.net.SocketException; import network.SocketWriter; import network.protocol.Packet; @@ -48,32 +47,20 @@ public class ServerConnexion implements PacketVisitor { @Override public void visitPacket(CreateRoomPacket packet) { - try { - server.createRoom(packet.getRoomName(), this); - sendPacket(new ServerResponsePacket(Response.RoomCreated)); - } catch (SocketException e) { - sendPacket(new ServerResponsePacket(Response.RoomNotCreated)); - } + boolean created = server.createRoom(packet.getRoomName(), this); + sendPacket(new ServerResponsePacket(created ? Response.RoomCreated : Response.RoomNotCreated)); } @Override public void visitPacket(JoinRoomPacket packet) { - try { - server.joinRoom(packet.getRoomName(), this); - sendPacket(new ServerResponsePacket(Response.RoomJoined)); - } catch (SocketException e) { - sendPacket(new ServerResponsePacket(Response.RoomNotJoined)); - } + boolean joined = server.joinRoom(packet.getRoomName(), this); + sendPacket(new ServerResponsePacket(joined ? Response.RoomJoined : Response.RoomNotJoined)); } @Override public void visitPacket(LeaveRoomPacket packet) { - try { - server.leaveRoom(this); - sendPacket(new ServerResponsePacket(Response.RoomLeft)); - } catch (SocketException e) { - sendPacket(new ServerResponsePacket(Response.RoomNotLeft)); - } + boolean left = server.leaveRoom(this); + sendPacket(new ServerResponsePacket(left ? Response.RoomLeft : Response.RoomNotLeft)); } @Override @@ -95,11 +82,8 @@ public class ServerConnexion implements PacketVisitor { @Override public void visitPacket(SendChatMessagePacket packet) { - try { - server.sendToRoom(this, packet); - } catch (SocketException e) { - sendPacket(new ServerResponsePacket(Response.MessageNotSent)); - } + boolean messageSent = server.sendToRoom(this, packet); + sendPacket(new ServerResponsePacket(messageSent ? Response.MessageSent : Response.MessageNotSent)); } @Override