uggly reliable
This commit is contained in:
@@ -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'");
|
||||
|
||||
Reference in New Issue
Block a user