uggly reliable

This commit is contained in:
2025-03-06 11:46:45 +01:00
parent 6950810b95
commit c8a748fe71
12 changed files with 401 additions and 92 deletions

View File

@@ -8,40 +8,19 @@ import network.Socket;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.packets.*;
import network.protocol.packets.ServerResponsePacket.Response;
public class ClientConnexion implements PacketVisitor, PacketHandler {
private final InetSocketAddress serverAddress;
private final Socket socket;
private final ClientListener callback;
private volatile boolean connected = false;
public ClientConnexion(Socket socket, InetSocketAddress serverAddress, ClientListener callback) {
this.serverAddress = serverAddress;
this.socket = socket;
this.callback = callback;
this.socket.addHandler(this);
spamHandshake();
}
private void spamHandshake() {
for (int i = 0; i < 5; i++) {
sendPacket(new HandshakePacket());
}
new Thread(this::waitForHandshake).start();
}
private void waitForHandshake() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(!connected) {
System.out.println("The server did not respond !");
this.close();
this.callback.handleConnexionError();
}
}
public void close() {
@@ -77,6 +56,8 @@ public class ClientConnexion implements PacketVisitor, PacketHandler {
@Override
public void visitPacket(ServerResponsePacket packet) {
this.callback.handleServerResponse(packet.getResponse());
if (packet.getResponse() == Response.AuthSuccess)
this.callback.handleConnect();
}
@Override
@@ -92,17 +73,9 @@ public class ClientConnexion implements PacketVisitor, PacketHandler {
@Override
public void visitPacket(DisconnectPacket packet) {
this.close();
this.connected = false;
this.callback.handleDisconnect();
}
@Override
public void visitPacket(HandshakePacket packet) {
if (!connected)
this.callback.handleConnect();
this.connected = true;
}
@Override
public void visitPacket(CreateRoomPacket packet) {
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");