diff --git a/src/main/java/net/beaconpe/jraklib/server/Session.java b/src/main/java/net/beaconpe/jraklib/server/Session.java index cf52265..65d2300 100644 --- a/src/main/java/net/beaconpe/jraklib/server/Session.java +++ b/src/main/java/net/beaconpe/jraklib/server/Session.java @@ -69,7 +69,7 @@ public class Session { private Map recoveryQueue = new ConcurrentHashMap<>(); - private Map> splitPackets = new ConcurrentHashMap<>(); + private Map splitPackets = new ConcurrentHashMap<>(); private Map> needACK = new ConcurrentHashMap<>(); @@ -265,7 +265,7 @@ public void addEncapsulatedToQueue(EncapsulatedPacket packet) throws IOException } public void addEncapsulatedToQueue(EncapsulatedPacket packet, byte flags) throws IOException { - if((packet.needACK = (flags & JRakLib.FLAG_NEED_ACK) > 0) == true){ + if((packet.needACK = (flags & JRakLib.FLAG_NEED_ACK) > 0)){ needACK.put(packet.identifierACK, new ConcurrentHashMap<>()); } @@ -313,23 +313,21 @@ private void handleSplit(EncapsulatedPacket packet) throws IOException { } if(!splitPackets.containsKey(packet.splitID)){ - Map map = new ConcurrentHashMap<>(); - map.put(packet.splitIndex, packet); - splitPackets.put(packet.splitID, map); + EncapsulatedPacket[] array = new EncapsulatedPacket[packet.splitCount]; + array[packet.splitIndex] = packet; + splitPackets.put(packet.splitID, array); } else { - Map map = splitPackets.get(packet.splitID); - map.put(packet.splitIndex, packet); - splitPackets.put(packet.splitID, map); + splitPackets.get(packet.splitID)[packet.splitIndex] = packet; } - if(splitPackets.get(packet.splitID).values().size() == packet.splitCount){ + if(splitPackets.get(packet.splitID).length == packet.splitCount){ EncapsulatedPacket pk = new EncapsulatedPacket(); ByteBuffer bb = ByteBuffer.allocate(64 * 64 * 64); + EncapsulatedPacket[] encapsulatedPackets = splitPackets.get(packet.splitID); for(int i = 0; i < packet.splitCount; i++){ - bb.put(splitPackets.get(packet.splitID).get(i).buffer); + bb.put(encapsulatedPackets[i].buffer); } pk.buffer = Arrays.copyOf(bb.array(), bb.position()); - bb = null; pk.length = pk.buffer.length; splitPackets.remove(packet.splitID);