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

@@ -2,34 +2,50 @@ package network.server;
import java.io.IOException;
import java.net.Socket;
import java.util.Random;
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 ServerConnexion extends Connexion{
public class ServerConnexion extends Connexion {
public ServerConnexion(Socket socket) throws IOException {
private final Server server;
private final KeepAliveHandler keepAliveHandler;
private boolean shouldClose = false;
public ServerConnexion(Socket socket, Server server) throws IOException {
super(socket);
System.out.println("Bonjour le client !");
sendKeepAlive();
this.server = server;
this.keepAliveHandler = new KeepAliveHandler(this);
}
public void sendKeepAlive() throws IOException {
Random r = new Random();
sendPacket(new KeepAlivePacket(r.nextLong()));
public boolean update() {
if (shouldClose)
return false;
return this.keepAliveHandler.update();
}
@Override
public void visit(ConnexionInfoPacket packet) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'visit'");
public void close() {
sendPacket(new DisconnectPacket("Server stopped"));
super.close();
shouldClose = true;
}
@Override
public void visit(KeepAlivePacket packet) {
System.out.println("Je l'ai reçu !");
public void visitPacket(ConnexionInfoPacket packet) {
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
}
@Override
public void visitPacket(KeepAlivePacket packet) {
this.keepAliveHandler.recievedKeepAlive(packet.getKeepAliveId());
}
@Override
public void visitPacket(DisconnectPacket packet) {
close();
}
}