Fixed server discovery
This commit is contained in:
@@ -5,9 +5,7 @@ import com.badlogic.gdx.utils.Array;
|
||||
import com.badlogic.gdx.utils.ObjectMap;
|
||||
import com.badlogic.gdx.utils.ObjectSet;
|
||||
import com.esotericsoftware.kryonet.*;
|
||||
import com.esotericsoftware.kryonet.FrameworkMessage.DiscoverHost;
|
||||
import com.esotericsoftware.kryonet.Listener.LagListener;
|
||||
import com.esotericsoftware.kryonet.serialization.Serialization;
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.net.Host;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
@@ -147,16 +145,8 @@ public class KryoClient implements ClientProvider{
|
||||
public void pingHost(String address, int port, Consumer<Host> valid, Consumer<IOException> invalid){
|
||||
Thread thread = new Thread(() -> {
|
||||
try {
|
||||
|
||||
Serialization ser = (Serialization) UCore.getPrivate(client, "serialization");
|
||||
DatagramSocket socket = new DatagramSocket();
|
||||
ByteBuffer dataBuffer = ByteBuffer.allocate(64);
|
||||
ser.write(dataBuffer, new DiscoverHost());
|
||||
|
||||
dataBuffer.flip();
|
||||
byte[] data = new byte[dataBuffer.limit()];
|
||||
dataBuffer.get(data);
|
||||
socket.send(new DatagramPacket(data, data.length, InetAddress.getByName(address), port));
|
||||
socket.send(new DatagramPacket(new byte[]{-2, 1}, 2, InetAddress.getByName(address), Vars.port));
|
||||
|
||||
socket.setSoTimeout(2000);
|
||||
|
||||
@@ -166,9 +156,8 @@ public class KryoClient implements ClientProvider{
|
||||
|
||||
socket.receive(packet);
|
||||
|
||||
handler.onDiscoveredHost(packet);
|
||||
|
||||
Host host = addresses.values().next();
|
||||
ByteBuffer buffer = ByteBuffer.wrap(packet.getData());
|
||||
Host host = KryoRegistrator.readServerData(packet.getAddress(), buffer);
|
||||
|
||||
if (host != null) {
|
||||
Gdx.app.postRunnable(() -> valid.accept(host));
|
||||
|
||||
@@ -67,7 +67,7 @@ public class KryoServer implements ServerProvider {
|
||||
c.addressTCP = connection.getRemoteAddressTCP().toString();
|
||||
|
||||
connections.add(kn);
|
||||
Gdx.app.postRunnable(() -> Net.handleServerReceived(c, kn.id));
|
||||
Gdx.app.postRunnable(() -> Net.handleServerReceived(kn.id, c));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,7 +79,7 @@ public class KryoServer implements ServerProvider {
|
||||
Disconnect c = new Disconnect();
|
||||
c.id = k.id;
|
||||
|
||||
Gdx.app.postRunnable(() -> Net.handleServerReceived(c, c.id));
|
||||
Gdx.app.postRunnable(() -> Net.handleServerReceived(k.id, c));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -89,7 +89,7 @@ public class KryoServer implements ServerProvider {
|
||||
|
||||
Gdx.app.postRunnable(() -> {
|
||||
try{
|
||||
Net.handleServerReceived(object, k.id);
|
||||
Net.handleServerReceived(k.id, object);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -377,7 +377,7 @@ public class KryoServer implements ServerProvider {
|
||||
if(k == null) return;
|
||||
Disconnect disconnect = new Disconnect();
|
||||
disconnect.id = k.id;
|
||||
Net.handleServerReceived(disconnect, k.id);
|
||||
Net.handleServerReceived(k.id, disconnect);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -396,7 +396,7 @@ public class KryoServer implements ServerProvider {
|
||||
if (debug) UCore.log("Decoded: " + Arrays.toString(out));
|
||||
ByteBuffer buffer = ByteBuffer.wrap(out);
|
||||
Object o = serializer.read(buffer);
|
||||
Net.handleServerReceived(o, k.id);
|
||||
Net.handleServerReceived(k.id, o);
|
||||
}
|
||||
}catch (Exception e){
|
||||
UCore.log("Error reading message!");
|
||||
|
||||
Reference in New Issue
Block a user