Net cleanup
This commit is contained in:
@@ -281,12 +281,11 @@ public class ArcNetServer implements ServerProvider{
|
|||||||
}
|
}
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
Log.err(e);
|
Log.err(e);
|
||||||
Log.info("Disconnecting invalid client!");
|
Log.info("Error sending packet. Disconnecting invalid client!");
|
||||||
connection.close();
|
connection.close();
|
||||||
|
|
||||||
KryoConnection k = getByKryoID(connection.getID());
|
KryoConnection k = getByKryoID(connection.getID());
|
||||||
if(k != null) connections.remove(k);
|
if(k != null) connections.remove(k);
|
||||||
Log.info("Connection removed {0}", k);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
package io.anuke.mindustry.net;
|
|
||||||
|
|
||||||
import io.anuke.arc.net.FrameworkMessage;
|
|
||||||
import io.anuke.arc.net.FrameworkMessage.*;
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
|
|
||||||
public class FrameworkSerializer{
|
|
||||||
|
|
||||||
public static void write(ByteBuffer buffer, FrameworkMessage message){
|
|
||||||
if(message instanceof Ping){
|
|
||||||
Ping p = (Ping)message;
|
|
||||||
|
|
||||||
buffer.put((byte)0);
|
|
||||||
buffer.putInt(p.id);
|
|
||||||
buffer.put(p.isReply ? 1 : (byte)0);
|
|
||||||
}else if(message instanceof DiscoverHost){
|
|
||||||
buffer.put((byte)1);
|
|
||||||
}else if(message instanceof KeepAlive){
|
|
||||||
buffer.put((byte)2);
|
|
||||||
}else if(message instanceof RegisterUDP){
|
|
||||||
RegisterUDP p = (RegisterUDP)message;
|
|
||||||
|
|
||||||
buffer.put((byte)3);
|
|
||||||
buffer.putInt(p.connectionID);
|
|
||||||
}else if(message instanceof RegisterTCP){
|
|
||||||
RegisterTCP p = (RegisterTCP)message;
|
|
||||||
|
|
||||||
buffer.put((byte)4);
|
|
||||||
buffer.putInt(p.connectionID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static FrameworkMessage read(ByteBuffer buffer){
|
|
||||||
byte id = buffer.get();
|
|
||||||
|
|
||||||
if(id == 0){
|
|
||||||
Ping p = new Ping();
|
|
||||||
p.id = buffer.getInt();
|
|
||||||
p.isReply = buffer.get() == 1;
|
|
||||||
|
|
||||||
return p;
|
|
||||||
}else if(id == 1){
|
|
||||||
|
|
||||||
return new DiscoverHost();
|
|
||||||
}else if(id == 2){
|
|
||||||
|
|
||||||
return new KeepAlive();
|
|
||||||
}else if(id == 3){
|
|
||||||
RegisterUDP p = new RegisterUDP();
|
|
||||||
p.connectionID = buffer.getInt();
|
|
||||||
|
|
||||||
return p;
|
|
||||||
}else if(id == 4){
|
|
||||||
RegisterTCP p = new RegisterTCP();
|
|
||||||
p.connectionID = buffer.getInt();
|
|
||||||
|
|
||||||
return p;
|
|
||||||
}else{
|
|
||||||
throw new RuntimeException("Unknown framework message!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
package io.anuke.mindustry.net;
|
package io.anuke.mindustry.net;
|
||||||
|
|
||||||
import io.anuke.arc.net.FrameworkMessage;
|
|
||||||
import io.anuke.arc.net.NetSerializer;
|
|
||||||
import io.anuke.arc.function.Supplier;
|
import io.anuke.arc.function.Supplier;
|
||||||
|
import io.anuke.arc.net.FrameworkMessage;
|
||||||
|
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.Pools;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
@@ -14,7 +15,7 @@ public class PacketSerializer implements NetSerializer{
|
|||||||
public void write(ByteBuffer byteBuffer, Object o){
|
public void write(ByteBuffer byteBuffer, Object o){
|
||||||
if(o instanceof FrameworkMessage){
|
if(o instanceof FrameworkMessage){
|
||||||
byteBuffer.put((byte)-2); //code for framework message
|
byteBuffer.put((byte)-2); //code for framework message
|
||||||
FrameworkSerializer.write(byteBuffer, (FrameworkMessage)o);
|
writeFramework(byteBuffer, (FrameworkMessage)o);
|
||||||
}else{
|
}else{
|
||||||
if(!(o instanceof Packet))
|
if(!(o instanceof Packet))
|
||||||
throw new RuntimeException("All sent objects must implement be Packets! Class: " + o.getClass());
|
throw new RuntimeException("All sent objects must implement be Packets! Class: " + o.getClass());
|
||||||
@@ -30,11 +31,58 @@ public class PacketSerializer implements NetSerializer{
|
|||||||
public Object read(ByteBuffer byteBuffer){
|
public Object read(ByteBuffer byteBuffer){
|
||||||
byte id = byteBuffer.get();
|
byte id = byteBuffer.get();
|
||||||
if(id == -2){
|
if(id == -2){
|
||||||
return FrameworkSerializer.read(byteBuffer);
|
return readFramework(byteBuffer);
|
||||||
}else{
|
}else{
|
||||||
Packet packet = Pools.obtain((Class<Packet>)Registrator.getByID(id).type, (Supplier<Packet>)Registrator.getByID(id).constructor);
|
Packet packet = Pools.obtain((Class<Packet>)Registrator.getByID(id).type, (Supplier<Packet>)Registrator.getByID(id).constructor);
|
||||||
packet.read(byteBuffer);
|
packet.read(byteBuffer);
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void writeFramework(ByteBuffer buffer, FrameworkMessage message){
|
||||||
|
if(message instanceof Ping){
|
||||||
|
Ping p = (Ping)message;
|
||||||
|
buffer.put((byte)0);
|
||||||
|
buffer.putInt(p.id);
|
||||||
|
buffer.put(p.isReply ? 1 : (byte)0);
|
||||||
|
}else if(message instanceof DiscoverHost){
|
||||||
|
buffer.put((byte)1);
|
||||||
|
}else if(message instanceof KeepAlive){
|
||||||
|
buffer.put((byte)2);
|
||||||
|
}else if(message instanceof RegisterUDP){
|
||||||
|
RegisterUDP p = (RegisterUDP)message;
|
||||||
|
buffer.put((byte)3);
|
||||||
|
buffer.putInt(p.connectionID);
|
||||||
|
}else if(message instanceof RegisterTCP){
|
||||||
|
RegisterTCP p = (RegisterTCP)message;
|
||||||
|
buffer.put((byte)4);
|
||||||
|
buffer.putInt(p.connectionID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FrameworkMessage readFramework(ByteBuffer buffer){
|
||||||
|
byte id = buffer.get();
|
||||||
|
|
||||||
|
if(id == 0){
|
||||||
|
Ping p = new Ping();
|
||||||
|
p.id = buffer.getInt();
|
||||||
|
p.isReply = buffer.get() == 1;
|
||||||
|
return p;
|
||||||
|
}else if(id == 1){
|
||||||
|
return new DiscoverHost();
|
||||||
|
}else if(id == 2){
|
||||||
|
return new KeepAlive();
|
||||||
|
}else if(id == 3){
|
||||||
|
RegisterUDP p = new RegisterUDP();
|
||||||
|
p.connectionID = buffer.getInt();
|
||||||
|
return p;
|
||||||
|
}else if(id == 4){
|
||||||
|
RegisterTCP p = new RegisterTCP();
|
||||||
|
p.connectionID = buffer.getInt();
|
||||||
|
return p;
|
||||||
|
}else{
|
||||||
|
throw new RuntimeException("Unknown framework message!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user