Added /room command to know in which room the user is
This commit is contained in:
@@ -29,6 +29,8 @@ You will also be able to create a new room.
|
|||||||
- /listRooms
|
- /listRooms
|
||||||
- /joinRoom *roomName*
|
- /joinRoom *roomName*
|
||||||
- /leaveRoom
|
- /leaveRoom
|
||||||
|
- /room
|
||||||
|
- /bye
|
||||||
- /help
|
- /help
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
|
|||||||
@@ -4,13 +4,7 @@ import java.net.DatagramSocket;
|
|||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
|
|
||||||
import network.protocol.packets.CreateRoomPacket;
|
import network.protocol.packets.*;
|
||||||
import network.protocol.packets.DisconnectPacket;
|
|
||||||
import network.protocol.packets.JoinRoomPacket;
|
|
||||||
import network.protocol.packets.LeaveRoomPacket;
|
|
||||||
import network.protocol.packets.LoginPacket;
|
|
||||||
import network.protocol.packets.RequestRoomListPacket;
|
|
||||||
import network.protocol.packets.SendChatMessagePacket;
|
|
||||||
|
|
||||||
public class Client {
|
public class Client {
|
||||||
|
|
||||||
@@ -52,4 +46,8 @@ public class Client {
|
|||||||
public void RequestRoomList() {
|
public void RequestRoomList() {
|
||||||
this.connexion.sendPacket(new RequestRoomListPacket());
|
this.connexion.sendPacket(new RequestRoomListPacket());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RequestActualRoom() {
|
||||||
|
this.connexion.sendPacket(new RequestActualRoomPacket());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,17 +9,7 @@ import network.SocketReader;
|
|||||||
import network.SocketWriter;
|
import network.SocketWriter;
|
||||||
import network.protocol.Packet;
|
import network.protocol.Packet;
|
||||||
import network.protocol.PacketVisitor;
|
import network.protocol.PacketVisitor;
|
||||||
import network.protocol.packets.ChatMessagePacket;
|
import network.protocol.packets.*;
|
||||||
import network.protocol.packets.CreateRoomPacket;
|
|
||||||
import network.protocol.packets.DisconnectPacket;
|
|
||||||
import network.protocol.packets.HandshakePacket;
|
|
||||||
import network.protocol.packets.JoinRoomPacket;
|
|
||||||
import network.protocol.packets.LeaveRoomPacket;
|
|
||||||
import network.protocol.packets.LoginPacket;
|
|
||||||
import network.protocol.packets.RequestRoomListPacket;
|
|
||||||
import network.protocol.packets.RoomListPacket;
|
|
||||||
import network.protocol.packets.SendChatMessagePacket;
|
|
||||||
import network.protocol.packets.ServerResponsePacket;
|
|
||||||
|
|
||||||
public class ClientConnexion implements PacketVisitor, PacketHandler {
|
public class ClientConnexion implements PacketVisitor, PacketHandler {
|
||||||
|
|
||||||
@@ -92,6 +82,16 @@ public class ClientConnexion implements PacketVisitor, PacketHandler {
|
|||||||
this.callback.handleServerResponse(packet.getResponse());
|
this.callback.handleServerResponse(packet.getResponse());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitPacket(RequestActualRoomPacket packet) {
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitPacket(ActualRoomPacket packet) {
|
||||||
|
this.callback.handleActualRoom(packet.getRoomName());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitPacket(DisconnectPacket packet) {
|
public void visitPacket(DisconnectPacket packet) {
|
||||||
this.close();
|
this.close();
|
||||||
|
|||||||
@@ -84,7 +84,10 @@ public class ClientConsole implements ClientListener {
|
|||||||
this.client.SendJoinRoom(roomName);
|
this.client.SendJoinRoom(roomName);
|
||||||
} else if (message.equals("/leaveRoom") || message.equals("/leave")) {
|
} else if (message.equals("/leaveRoom") || message.equals("/leave")) {
|
||||||
this.client.SendLeaveRoom();
|
this.client.SendLeaveRoom();
|
||||||
} else if (message.equals("/bye")) {
|
} else if (message.equals("/room")) {
|
||||||
|
this.client.RequestActualRoom();
|
||||||
|
}
|
||||||
|
else if (message.equals("/bye")) {
|
||||||
this.client.close();
|
this.client.close();
|
||||||
} else if (message.equals("/help")) {
|
} else if (message.equals("/help")) {
|
||||||
System.out.println("Available commands:");
|
System.out.println("Available commands:");
|
||||||
@@ -92,6 +95,8 @@ public class ClientConsole implements ClientListener {
|
|||||||
System.out.println("\t/listRooms");
|
System.out.println("\t/listRooms");
|
||||||
System.out.println("\t/joinRoom <roomName>");
|
System.out.println("\t/joinRoom <roomName>");
|
||||||
System.out.println("\t/leaveRoom");
|
System.out.println("\t/leaveRoom");
|
||||||
|
System.out.println("\t/room");
|
||||||
|
System.out.println("\t/bye");
|
||||||
System.out.println("\t/help");
|
System.out.println("\t/help");
|
||||||
} else {
|
} else {
|
||||||
System.out.println(ANSIColor.formatString("&rUnknown command&n"));
|
System.out.println(ANSIColor.formatString("&rUnknown command&n"));
|
||||||
@@ -145,6 +150,11 @@ public class ClientConsole implements ClientListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleActualRoom(String roomName) {
|
||||||
|
System.out.println(roomName != null ? ANSIColor.formatString("You are now in room &b" + roomName + "&n") : "You are not in a room");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleServerResponse(Response response) {
|
public void handleServerResponse(Response response) {
|
||||||
if (response == ServerResponsePacket.Response.MessageSent
|
if (response == ServerResponsePacket.Response.MessageSent
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ public interface ClientListener {
|
|||||||
void handleChatMessage(Instant time, String chatter, String content);
|
void handleChatMessage(Instant time, String chatter, String content);
|
||||||
void handleRoomList(List<String> roomNames);
|
void handleRoomList(List<String> roomNames);
|
||||||
void handleServerResponse(ServerResponsePacket.Response response);
|
void handleServerResponse(ServerResponsePacket.Response response);
|
||||||
|
void handleActualRoom(String roomName);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,6 @@
|
|||||||
package network.protocol;
|
package network.protocol;
|
||||||
|
|
||||||
import network.protocol.packets.ChatMessagePacket;
|
import network.protocol.packets.*;
|
||||||
import network.protocol.packets.CreateRoomPacket;
|
|
||||||
import network.protocol.packets.DisconnectPacket;
|
|
||||||
import network.protocol.packets.HandshakePacket;
|
|
||||||
import network.protocol.packets.JoinRoomPacket;
|
|
||||||
import network.protocol.packets.LeaveRoomPacket;
|
|
||||||
import network.protocol.packets.LoginPacket;
|
|
||||||
import network.protocol.packets.RequestRoomListPacket;
|
|
||||||
import network.protocol.packets.RoomListPacket;
|
|
||||||
import network.protocol.packets.SendChatMessagePacket;
|
|
||||||
import network.protocol.packets.ServerResponsePacket;
|
|
||||||
|
|
||||||
public interface PacketVisitor {
|
public interface PacketVisitor {
|
||||||
|
|
||||||
@@ -29,5 +19,7 @@ public interface PacketVisitor {
|
|||||||
void visitPacket(RoomListPacket packet);
|
void visitPacket(RoomListPacket packet);
|
||||||
void visitPacket(SendChatMessagePacket packet);
|
void visitPacket(SendChatMessagePacket packet);
|
||||||
void visitPacket(ServerResponsePacket packet);
|
void visitPacket(ServerResponsePacket packet);
|
||||||
|
void visitPacket(RequestActualRoomPacket packet);
|
||||||
|
void visitPacket(ActualRoomPacket packet);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
21
ChatApp/src/network/protocol/packets/ActualRoomPacket.java
Normal file
21
ChatApp/src/network/protocol/packets/ActualRoomPacket.java
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
|
||||||
|
public class ActualRoomPacket extends Packet {
|
||||||
|
private final String roomName;
|
||||||
|
|
||||||
|
public ActualRoomPacket(String roomName) {
|
||||||
|
this.roomName = roomName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRoomName() {
|
||||||
|
return roomName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
|
||||||
|
public class RequestActualRoomPacket extends Packet {
|
||||||
|
public RequestActualRoomPacket() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -136,4 +136,15 @@ public class ServerConnexion implements PacketVisitor {
|
|||||||
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
|
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitPacket(RequestActualRoomPacket packet) {
|
||||||
|
sendPacket(new ActualRoomPacket(server.getRoomName(this)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitPacket(ActualRoomPacket packet) {
|
||||||
|
// I'm never supposed to receive this from the client
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user