From 4e4cead24588e2f42e3808bc28624c41df95f0e1 Mon Sep 17 00:00:00 2001 From: Adrian Bergqvist Date: Sun, 5 Jun 2022 18:07:33 +0200 Subject: [PATCH] Memory optimizations --- .../ambassador/ForgeHandshakeDataHandler.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/adde0109/ambassador/ForgeHandshakeDataHandler.java b/src/main/java/org/adde0109/ambassador/ForgeHandshakeDataHandler.java index f67fdfc..def82b2 100644 --- a/src/main/java/org/adde0109/ambassador/ForgeHandshakeDataHandler.java +++ b/src/main/java/org/adde0109/ambassador/ForgeHandshakeDataHandler.java @@ -104,7 +104,7 @@ public class ForgeHandshakeDataHandler { private class handshakeReceiver { - private static final int MAX_DATA_LENGTH = 16000; + private int partLength; private final Logger logger; @@ -114,7 +114,6 @@ public class ForgeHandshakeDataHandler { private final RegisteredServer forgeServer; private handshakeReceiver(RegisteredServer server, Logger logger) { - recivedParts = new byte[2000000]; this.logger = logger; this.forgeServer = server; @@ -144,11 +143,17 @@ public class ForgeHandshakeDataHandler { int[] values = Arrays.stream(pair.getVersion().substring(pair.getVersion().indexOf(":") + 1).split(":")).map(Integer::parseInt).mapToInt(x -> x).toArray(); + int totalLength = Integer.parseInt((pair.getVersion().split(":")[0].split("-"))[2]); int parts = Integer.parseInt((pair.getVersion().split(":")[0].split("-"))[1]); int recivedPartNr = Integer.parseInt((pair.getVersion().split(":")[0].split("-"))[0]); logger.info("Downloaded part " + String.valueOf(numberOfRecivedParts) + " out of " + String.valueOf(parts)); + if(recivedParts == null) { + recivedParts = new byte[totalLength]; + partLength = pair.getId().getBytes(StandardCharsets.ISO_8859_1).length; + } + placePartInArray(pair.getId().getBytes(StandardCharsets.ISO_8859_1), recivedPartNr - 1); if (numberOfRecivedParts >= parts) { @@ -162,7 +167,7 @@ public class ForgeHandshakeDataHandler { private void placePartInArray(byte[] temp, int partNr) { - int head = partNr * MAX_DATA_LENGTH; + int head = partNr * partLength; for (int i = 0; i < temp.length; i++) { recivedParts[head] = temp[i]; head++;