From 9c26418354e95db8f93bf47c598c4ef269b7b14e Mon Sep 17 00:00:00 2001 From: opfromthestart Date: Wed, 18 Aug 2021 13:15:30 -0400 Subject: [PATCH] Well, it works now ig -Better file lengthening -Made temp files -Exchanged temp files for ByteArrayIn/OutputBuffers -Fixed loadRegion to actually read sector sizes --- .../progressia/test/TestWorldDiskIO.java | 55 ++++++++++++++----- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/src/main/java/ru/windcorp/progressia/test/TestWorldDiskIO.java b/src/main/java/ru/windcorp/progressia/test/TestWorldDiskIO.java index 8bed37a..cbb294b 100644 --- a/src/main/java/ru/windcorp/progressia/test/TestWorldDiskIO.java +++ b/src/main/java/ru/windcorp/progressia/test/TestWorldDiskIO.java @@ -21,6 +21,8 @@ package ru.windcorp.progressia.test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedWriter; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; @@ -52,7 +54,7 @@ import ru.windcorp.progressia.server.Server; public class TestWorldDiskIO { private static Path SAVE_DIR = Paths.get("tmp_world"); - private static String formatFile = "world.format"; + private static final String formatFile = "world.format"; private static final Logger LOG = LogManager.getLogger("TestWorldDiskIO"); private static final boolean ENABLE = true; @@ -218,6 +220,12 @@ public class TestWorldDiskIO { ) ); + /*if (!dosave) + { + return; + } + dosave = false;*/ + try ( RandomAccessFile output = new RandomAccessFile(path.toFile(), "rw") ) { @@ -242,27 +250,30 @@ public class TestWorldDiskIO { output.seek(shortOffset); output.writeInt(offset<<8); output.seek(outputLen); - while (output.length()> 8; + int sectorLength = input.read(); input.skipNBytes(fullOffset-shortOffset-offsetBytes-1); input.skipNBytes(sectorSize*offset); - input.mark(sectorSize*sectorLength); + + LOG.info("Read {} sectors", sectorLength); + + byte tempData[] = input.readNBytes(sectorSize*sectorLength); + DataInputStream trueInput = new DataInputStream( - new InflaterInputStream(input)); + new InflaterInputStream(new BufferedInputStream(new ByteArrayInputStream(tempData)))); ChunkData chunk = ChunkIO.load(world, chunkPos, trueInput, IOContext.SAVE); readGenerationHint(chunk, trueInput, server); + trueInput.close(); return chunk; } }