add packet structure

This commit is contained in:
2025-02-27 12:14:07 +01:00
parent 24dddfa3f7
commit 2917535e05
15 changed files with 320 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
package network.protocol;
import java.io.Serializable;
public abstract class Packet implements Serializable {
public abstract void accept(PacketVisitor packetVisitor);
}

View File

@@ -0,0 +1,29 @@
package network.protocol;
import network.protocol.packets.ChatMessagePacket;
import network.protocol.packets.CreateRoomPacket;
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 {
default void visit(Packet packet) {
packet.accept(this);
}
void visitPacket(ChatMessagePacket packet);
void visitPacket(CreateRoomPacket packet);
void visitPacket(JoinRoomPacket packet);
void visitPacket(LeaveRoomPacket packet);
void visitPacket(LoginPacket packet);
void visitPacket(RequestRoomListPacket packet);
void visitPacket(RoomListPacket packet);
void visitPacket(SendChatMessagePacket packet);
void visitPacket(ServerResponsePacket packet);
}

View File

@@ -0,0 +1,15 @@
package network.protocol;
public enum Packets {
ChatMessage,
CreateRoom,
JoinRoom,
LeaveRoom,
Login,
RequestRoom,
Response,
RoomList,
SendChatMessage,
}

View File

@@ -0,0 +1,40 @@
package network.protocol.packets;
import java.time.Instant;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class ChatMessagePacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
private final Instant time;
private final String chatter;
private final String content;
public ChatMessagePacket(Instant time, String chatter, String content) {
this.time = time;
this.chatter = chatter;
this.content = content;
}
public Instant getTime() {
return time;
}
public String getChatter() {
return chatter;
}
public String getContent() {
return content;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,26 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class CreateRoomPacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
private final String roomName;
public CreateRoomPacket(String roomName) {
this.roomName = roomName;
}
public String getRoomName() {
return roomName;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,26 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class JoinRoomPacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
private final String roomName;
public JoinRoomPacket(String roomName) {
this.roomName = roomName;
}
public String getRoomName() {
return roomName;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,19 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class LeaveRoomPacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
public LeaveRoomPacket() {
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,26 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class LoginPacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
private final String pseudo;
public LoginPacket(String pseudo) {
this.pseudo = pseudo;
}
public String getPseudo() {
return pseudo;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,20 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class RequestRoomListPacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
public RequestRoomListPacket() {
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,28 @@
package network.protocol.packets;
import java.util.ArrayList;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class RoomListPacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
private final ArrayList<String> roomNames;
public RoomListPacket(ArrayList<String> roomNames) {
this.roomNames = roomNames;
}
public ArrayList<String> getRoomNames() {
return roomNames;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,26 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class SendChatMessagePacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
private final String content;
public SendChatMessagePacket(String content) {
this.content = content;
}
public String getContent() {
return content;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,30 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class ServerResponsePacket extends Packet {
static private final long serialVersionUID = Packets.Login.ordinal();
public static enum Response {
AuthSuccess, AuthError, RoomCreated, RoomNotCreated, RoomJoined, RoomNotJoined, NotInRoom;
};
private final Response response;
public ServerResponsePacket(Response response) {
this.response = response;
}
public Response getResponse() {
return response;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}