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

@@ -7,11 +7,16 @@ public class Client {
private final ClientConnexion clientConnection;
public Client(String address, short port) throws UnknownHostException, IOException {
this.clientConnection = new ClientConnexion(address, port);
this.clientConnection = new ClientConnexion(address, port, this);
}
public void stop() {
this.clientConnection.close();
}
public void onDisconnect() {
// do some stuff
System.out.println("OSEKOUR");
}
}

View File

@@ -5,29 +5,39 @@ import java.net.Socket;
import java.net.UnknownHostException;
import network.Connexion;
import network.packets.ConnexionInfoPacket;
import network.packets.KeepAlivePacket;
import network.protocol.packets.ConnexionInfoPacket;
import network.protocol.packets.DisconnectPacket;
import network.protocol.packets.KeepAlivePacket;
public class ClientConnexion extends Connexion {
public ClientConnexion(String address, short port) throws UnknownHostException, IOException {
private final Client client;
public ClientConnexion(String address, short port, Client client) throws UnknownHostException, IOException {
super(new Socket(address, port));
this.client = client;
}
@Override
public void visit(ConnexionInfoPacket packet) {
public void close() {
super.close();
client.onDisconnect();
}
@Override
public void visit(KeepAlivePacket packet) {
System.out.println("Coucou !!!!!!!!!!!!!!!!!!!");
try {
sendPacket(packet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public void visitPacket(ConnexionInfoPacket packet) {
}
@Override
public void visitPacket(KeepAlivePacket packet) {
// we just send the packet back to the server
sendPacket(packet);
}
@Override
public void visitPacket(DisconnectPacket packet) {
close();
}
}

View File

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