better network structure
Some checks failed
Linux arm64 / Build (push) Has been cancelled

This commit is contained in:
2025-01-23 22:24:23 +01:00
parent 5e99cd92df
commit bfe98a2cf0
22 changed files with 248 additions and 93 deletions

View File

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

View File

@@ -0,0 +1,28 @@
package network.protocol;
import java.util.ArrayList;
import java.util.List;
public class PacketDispatcher {
private final List<PacketVisitor> handlers;
public PacketDispatcher() {
this.handlers = new ArrayList<>();
}
public void dispatch(Packet packet) {
for (PacketVisitor handler : handlers) {
handler.visitPacket(packet);
}
}
public void registerHandler(PacketVisitor handler) {
handlers.add(handler);
}
public void unregisterHandler(PacketVisitor handler) {
handlers.remove(handler);
}
}

View File

@@ -0,0 +1,6 @@
package network.protocol;
public class PacketFactory {
}

View File

@@ -0,0 +1,17 @@
package network.protocol;
import network.protocol.packets.ConnexionInfoPacket;
import network.protocol.packets.DisconnectPacket;
import network.protocol.packets.KeepAlivePacket;
public interface PacketVisitor {
default void visitPacket(Packet packet) {
packet.accept(this);
}
void visitPacket(ConnexionInfoPacket packet);
void visitPacket(DisconnectPacket packet);
void visitPacket(KeepAlivePacket packet);
}

View File

@@ -0,0 +1,7 @@
package network.protocol;
public enum Packets {
ConnectionInfo, KeepAlive, Disconnect
}

View File

@@ -0,0 +1,25 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.Packets;
public class ConnexionInfoPacket extends Packet {
static private final long serialVersionUID = Packets.ConnectionInfo.ordinal();
private final int connectionId;
public ConnexionInfoPacket(int connectionId) {
this.connectionId = connectionId;
}
public int getConnectionId() {
return connectionId;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}

View File

@@ -0,0 +1,23 @@
package network.protocol.packets;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
public class DisconnectPacket extends Packet {
private final String reason;
public DisconnectPacket(String reason) {
this.reason = reason;
}
public String getReason() {
return reason;
}
@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 KeepAlivePacket extends Packet {
static private final long serialVersionUID = Packets.KeepAlive.ordinal();
private final long keepAliveId;
public KeepAlivePacket(long keepAliveId) {
this.keepAliveId = keepAliveId;
}
public long getKeepAliveId() {
return keepAliveId;
}
@Override
public void accept(PacketVisitor packetVisitor) {
packetVisitor.visitPacket(this);
}
}