diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/terminal/TerminalState.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/terminal/TerminalState.java index ae9b3237c..19a554850 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/terminal/TerminalState.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/terminal/TerminalState.java @@ -5,18 +5,10 @@ package dan200.computercraft.shared.computer.terminal; import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufInputStream; -import io.netty.buffer.ByteBufOutputStream; import io.netty.buffer.Unpooled; import net.minecraft.network.FriendlyByteBuf; import javax.annotation.Nullable; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UncheckedIOException; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; /** * A snapshot of a terminal's state. @@ -31,20 +23,10 @@ public class TerminalState { public final int width; public final int height; - private final boolean compress; - @Nullable private final ByteBuf buffer; - private @Nullable ByteBuf compressed; - public TerminalState(@Nullable NetworkedTerminal terminal) { - this(terminal, true); - } - - public TerminalState(@Nullable NetworkedTerminal terminal, boolean compress) { - this.compress = compress; - if (terminal == null) { colour = false; width = height = 0; @@ -61,14 +43,13 @@ public class TerminalState { public TerminalState(FriendlyByteBuf buf) { colour = buf.readBoolean(); - compress = buf.readBoolean(); if (buf.readBoolean()) { width = buf.readVarInt(); height = buf.readVarInt(); var length = buf.readVarInt(); - buffer = readCompressed(buf, length, compress); + buffer = buf.readBytes(length); } else { width = height = 0; buffer = null; @@ -77,16 +58,13 @@ public class TerminalState { public void write(FriendlyByteBuf buf) { buf.writeBoolean(colour); - buf.writeBoolean(compress); buf.writeBoolean(buffer != null); if (buffer != null) { buf.writeVarInt(width); buf.writeVarInt(height); - - var sendBuffer = getCompressed(); - buf.writeVarInt(sendBuffer.readableBytes()); - buf.writeBytes(sendBuffer, sendBuffer.readerIndex(), sendBuffer.readableBytes()); + buf.writeVarInt(buffer.readableBytes()); + buf.writeBytes(buffer, buffer.readerIndex(), buffer.readableBytes()); } } @@ -110,40 +88,4 @@ public class TerminalState { terminal.read(new FriendlyByteBuf(buffer)); return terminal; } - - private ByteBuf getCompressed() { - if (buffer == null) throw new NullPointerException("buffer"); - if (!compress) return buffer; - if (compressed != null) return compressed; - - var compressed = Unpooled.buffer(); - try (OutputStream stream = new GZIPOutputStream(new ByteBufOutputStream(compressed))) { - stream.write(buffer.array(), buffer.arrayOffset(), buffer.readableBytes()); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - - return this.compressed = compressed; - } - - private static ByteBuf readCompressed(ByteBuf buf, int length, boolean compress) { - if (compress) { - var buffer = Unpooled.buffer(); - try (InputStream stream = new GZIPInputStream(new ByteBufInputStream(buf, length))) { - var swap = new byte[8192]; - while (true) { - var bytes = stream.read(swap); - if (bytes == -1) break; - buffer.writeBytes(swap, 0, bytes); - } - } catch (IOException e) { - throw new UncheckedIOException(e); - } - return buffer; - } else { - var buffer = Unpooled.buffer(length); - buf.readBytes(buffer, length); - return buffer; - } - } } diff --git a/projects/common/src/test/java/dan200/computercraft/shared/computer/terminal/TerminalStateTest.java b/projects/common/src/test/java/dan200/computercraft/shared/computer/terminal/TerminalStateTest.java index 5dbcb75ed..dceb64e7f 100644 --- a/projects/common/src/test/java/dan200/computercraft/shared/computer/terminal/TerminalStateTest.java +++ b/projects/common/src/test/java/dan200/computercraft/shared/computer/terminal/TerminalStateTest.java @@ -18,22 +18,11 @@ import static org.junit.jupiter.api.Assertions.*; */ public class TerminalStateTest { @RepeatedTest(5) - public void testCompressed() { + public void testRoundTrip() { var terminal = randomTerminal(); var buffer = new FriendlyByteBuf(Unpooled.directBuffer()); - new TerminalState(terminal, true).write(buffer); - - checkEqual(terminal, read(buffer)); - assertEquals(0, buffer.readableBytes()); - } - - @RepeatedTest(5) - public void testUncompressed() { - var terminal = randomTerminal(); - - var buffer = new FriendlyByteBuf(Unpooled.directBuffer()); - new TerminalState(terminal, false).write(buffer); + new TerminalState(terminal).write(buffer); checkEqual(terminal, read(buffer)); assertEquals(0, buffer.readableBytes());