This commit is contained in:
Anuken
2019-08-30 16:39:40 -04:00
172 changed files with 6795 additions and 5599 deletions

View File

@@ -8,7 +8,6 @@ import io.anuke.arc.util.async.*;
import io.anuke.arc.util.pooling.*;
import io.anuke.mindustry.net.Net.*;
import io.anuke.mindustry.net.Packets.*;
import net.jpountz.lz4.*;
import java.io.*;
import java.net.*;
@@ -20,7 +19,6 @@ import static io.anuke.mindustry.Vars.*;
public class ArcNetClient implements ClientProvider{
final Client client;
final Supplier<DatagramPacket> packetSupplier = () -> new DatagramPacket(new byte[256], 256);
final LZ4FastDecompressor decompressor = LZ4Factory.fastestInstance().fastDecompressor();
public ArcNetClient(){
client = new Client(8192, 4096, new PacketSerializer());
@@ -75,14 +73,6 @@ public class ArcNetClient implements ClientProvider{
}
}
@Override
public byte[] decompressSnapshot(byte[] input, int size){
byte[] result = new byte[size];
decompressor.decompress(input, result);
return result;
}
@Override
public void connect(String ip, int port, Runnable success){
Threads.daemon(() -> {
@@ -90,17 +80,15 @@ public class ArcNetClient implements ClientProvider{
//just in case
client.stop();
Thread updateThread = new Thread(() -> {
Threads.daemon("Net Client", () -> {
try{
client.run();
}catch(Exception e){
if(!(e instanceof ClosedSelectorException)) handleException(e);
}
}, "Net Client");
updateThread.setDaemon(true);
updateThread.start();
});
client.connect(5000, ip, port);
client.connect(5000, ip, port, port);
success.run();
}catch(Exception e){
handleException(e);
@@ -116,7 +104,11 @@ public class ArcNetClient implements ClientProvider{
@Override
public void sendClient(Object object, SendMode mode){
try{
client.sendTCP(object);
if(mode == SendMode.tcp){
client.sendTCP(object);
}else{
client.sendUDP(object);
}
//sending things can cause an under/overflow, catch it and disconnect instead of crashing
}catch(BufferOverflowException | BufferUnderflowException e){
Net.showError(e);
@@ -194,4 +186,4 @@ public class ArcNetClient implements ClientProvider{
}
}
}
}

View File

@@ -6,7 +6,6 @@ import io.anuke.arc.util.*;
import io.anuke.arc.util.async.*;
import io.anuke.mindustry.net.Net.*;
import io.anuke.mindustry.net.Packets.*;
import net.jpountz.lz4.*;
import java.io.*;
import java.nio.*;
@@ -18,7 +17,6 @@ import static io.anuke.mindustry.Vars.*;
public class ArcNetServer implements ServerProvider{
final Server server;
final CopyOnWriteArrayList<ArcConnection> connections = new CopyOnWriteArrayList<>();
final LZ4Compressor compressor = LZ4Factory.fastestInstance().fastCompressor();
Thread serverThread;
public ArcNetServer(){
@@ -87,11 +85,6 @@ public class ArcNetServer implements ServerProvider{
server.addListener(listener);
}
@Override
public byte[] compressSnapshot(byte[] input){
return compressor.compress(input);
}
@Override
public Iterable<ArcConnection> getConnections(){
return connections;
@@ -112,7 +105,7 @@ public class ArcNetServer implements ServerProvider{
@Override
public void host(int port) throws IOException{
connections.clear();
server.bind(port);
server.bind(port, port);
serverThread = new Thread(() -> {
try{
@@ -158,7 +151,11 @@ public class ArcNetServer implements ServerProvider{
@Override
public void send(Object object, SendMode mode){
try{
connection.sendTCP(object);
if(mode == SendMode.tcp){
connection.sendTCP(object);
}else{
connection.sendUDP(object);
}
}catch(Exception e){
Log.err(e);
Log.info("Error sending packet. Disconnecting invalid client!");
@@ -175,4 +172,4 @@ public class ArcNetServer implements ServerProvider{
}
}
}
}

View File

@@ -1,12 +1,11 @@
package io.anuke.mindustry.net;
import io.anuke.arc.function.Supplier;
import io.anuke.arc.net.FrameworkMessage;
import io.anuke.arc.function.*;
import io.anuke.arc.net.*;
import io.anuke.arc.net.FrameworkMessage.*;
import io.anuke.arc.net.NetSerializer;
import io.anuke.arc.util.pooling.Pools;
import io.anuke.arc.util.pooling.*;
import java.nio.ByteBuffer;
import java.nio.*;
@SuppressWarnings("unchecked")
public class PacketSerializer implements NetSerializer{