From e60b937e6daca2fb0543388f54d90978b8bd045f Mon Sep 17 00:00:00 2001 From: Yassin Amhagi Date: Sat, 8 Feb 2020 01:51:57 +0100 Subject: [PATCH 1/2] Remove synced data (was useless in the first place). --- .../displee/cache/index/archive/Archive.java | 35 ++++--------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/src/main/java/org/displee/cache/index/archive/Archive.java b/src/main/java/org/displee/cache/index/archive/Archive.java index f6ce8fc..9c7a136 100644 --- a/src/main/java/org/displee/cache/index/archive/Archive.java +++ b/src/main/java/org/displee/cache/index/archive/Archive.java @@ -82,8 +82,6 @@ public class Archive implements Container { */ private int flag4Value2; - private byte[][] syncedData; - /** * Constructs a new {@code Archive} {@code Object}. * @param id The id of this archive. @@ -105,7 +103,6 @@ public Archive(int id, int name) { @Override public boolean read(InputStream inputStream) { if (fileIds.length == 1) { - syncedData[0] = inputStream.getBytes(); files[0].setData(inputStream.getBytes()); } else { int offsetPosition = inputStream.getBytes().length; @@ -137,7 +134,6 @@ public boolean read(InputStream inputStream) { } } for (int i = 0; i < fileIds.length; i++) { - syncedData[i] = filesData[i]; getFile(fileIds[i]).setData(filesData[i]); } } @@ -150,18 +146,16 @@ public byte[] write(OutputStream outputStream) { return files[0].getData(); } else { for (int i = 0; i < fileIds.length; i++) { - byte[] data = syncedData[i]; - if (data == null) { - continue; + final File file = getFile(fileIds[i]); + if (file != null && file.getData() != null) { + outputStream.writeBytes(file.getData()); } - outputStream.writeBytes(data); } - for (int i = 0; i < fileIds.length; i++) { - byte[] data = syncedData[i]; - if (data == null) { - continue; + for (int i = 0; i < files.length; i++) { + final File file = getFile(fileIds[i]); + if (file != null && file.getData() != null) { + outputStream.writeInt(file.getData().length - ((i == 0 || getFile(fileIds[i - 1]) == null || getFile(fileIds[i - 1]).getData() == null) ? 0 : getFile(fileIds[i - 1]).getData().length)); } - outputStream.writeInt(data.length - (i == 0 || syncedData[i - 1] == null ? 0 : syncedData[i - 1].length)); } } outputStream.writeByte(1); @@ -259,12 +253,6 @@ public File addFile(int id, byte[] data, int name) { boolean flag = false; if (!Arrays.equals(current.getData(), data)) { current.setData(data); - if (id >= syncedData.length) { - syncedData = Arrays.copyOf(syncedData, syncedData.length + 1); - syncedData[syncedData.length - 1] = data; - } else { - syncedData[id] = data; - } flag = true; } if (name != -1 && current.getName() != name) { @@ -276,12 +264,6 @@ public File addFile(int id, byte[] data, int name) { } return current; } - if (id < syncedData.length) { - syncedData = Miscellaneous.insertAt(syncedData, data, id); - } else { - syncedData = Arrays.copyOf(syncedData, syncedData.length + 1); - syncedData[syncedData.length - 1] = data; - } fileIds = Arrays.copyOf(fileIds, fileIds.length + 1); fileIds[fileIds.length - 1] = id; Arrays.sort(fileIds); @@ -369,7 +351,6 @@ public void sort() { public void reset() { files = new File[0]; fileIds = new int[0]; - syncedData = new byte[0][0]; } public void restore() { @@ -387,7 +368,6 @@ public void restore() { public Archive copy() { final Archive archive = new Archive(id, name); archive.fileIds = Arrays.copyOf(fileIds, fileIds.length); - archive.syncedData = Arrays.copyOf(syncedData, syncedData.length); archive.files = new File[files.length]; for(int i = 0; i < files.length; i++) { archive.files[i] = files[i].copy(); @@ -477,7 +457,6 @@ public int getRevision() { */ public void setFileIds(int length) { fileIds = new int[length]; - syncedData = new byte[length][]; } /** From a5c57a7193bb873d1ea99733ade6c8ed7d720bdc Mon Sep 17 00:00:00 2001 From: Yassin Amhagi Date: Sat, 8 Feb 2020 01:52:53 +0100 Subject: [PATCH 2/2] Updated compiled jar. --- RS-Cache-Library.jar | Bin 156955 -> 156946 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/RS-Cache-Library.jar b/RS-Cache-Library.jar index 66ead7fdf95e113e82407274fcc1b2ad684422f6..40a1d6e855196754f5b8f597bd4d58e1f0d021a4 100644 GIT binary patch delta 6896 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 Tq$e-P8ULf>fj~C20lfD=qz|yN delta 6970 zcmaJ`bzGF~(%yX*1Vy@pr9q@a7U@R1yBq25TtT|~0SW025pX301VI{U1p#T0P(s4| zV13Uy@B5wK_w7G3*UUBd&OP_cKl7vwUC$l5j;o;z!ytiRV`D@52xL=n>tR=-lL;+0 z=&nRMHWUrhxuJK^*bvH!mXT0yv_wH!ZeQ{=AbzzV*u#L zCLTca89LOhnGG%TnnkZ<(?av@YuEq7cWP%wyEEE3(C*&$%D^iHbiMZ{7gY8=C=(QI z>JotRp_Q)!P!ZU*hcY0aAXEZrh!dPKlPO_mwmkA>LuvryXmZ6NI|7688YWbR;QF<2 z45=9Ws2uJ=$?RA@Vj3-^WbGp8SgZr5l%A zdM>~k%BlU!G;VnyBf0FP2NPbsMATM^hc91_#u7|Mo*@X&A{buh| zOboPHWXJi?;y=CEAv#t5&GOOKG%lQo zfrc+mS%|J?sMM{tf6Yd(6}u*-K#8Je^2NOR=t&aD-3@YQFl=ueniYK9h&3x`Ua(gdgfPpR>!i+<0C}kF2AdV=j&pX4@2v5(E^kzougunHf~6BhKcybu?v+k zg}XiLs+74_RR#=Wr9ORuiL>@f{f%Rss)$d*3q*qlQT7}&b56H#Q{7A7*vIsh^k+r6 z-<>30ut5xrL`AYZux>9U%*vnZ_VnnDF`FaDt!V5L$ue?umb24$d-45Q=E_p2cT!sa z&6yYe1~r7l+Qw^yjBRwtJUp0lh2*ITVf>p(uSP}H-RaEpW~Sm4t!c7&xbk;_dcHLF zp54F+?a8c|h#>u_bY2JJ{CaQoo8MH#DuhQj$%kGz8O_M0J4SKF-KMmHe-DHkt%dyD zNkSl&1cTT}PFZo{I4o4XeaaFL9E8?v2>38jm4VUw`6;K@?NegN*)$#bJv~Nk0a6-L zc-ko9SKb02sds5_Dz0)*h?1#)PX82t8=;c3TK_sm`MQ4bONsol$n5u|x&$Y(v)EG+ zUJbLiDk|lP4!s4*P$V9+F}5bfl-m0Nt!V;OiCl>Mr$w8=9U4h0O=NtkH9}{pc5Xo- zqZiITX2n}G&2{)lw;KW{QEQ91JVqQ#Aq7NAV`PQ3e7}FZMr=VnJMW4<=;&76zg`iT zu&wo)BGJREVy?NMp*G%DardImL-9qol>E1JMaBZT;Asuq{&(9Do$1Ua+r?xFB%JT|1N&=AeP)X4pFLH$Qmp(4)tP6X#fWSdXF2+Hre4 zlZ#-n>8`DmqksEbN>sX?B^%26T|)l{itR7u#G9cS^^C}gCkX~;a;T0bGxr^ml0_Br z2gY3z)Vuc?__T02-wIMERcH&Fs@M3mCFy-?R*Hjf%jLIKVHqlHDQ`REyB6pA6i6-4 zU1%9KcoB!_ujL4v_k+9M8A&_MSv|tz#TBV?-UXb*4Jol+rP=I6G=8(TN?GYZ6w1pB4nY z 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