diff --git a/libs.gradle b/libs.gradle index d1b57c1..63c4dfe 100644 --- a/libs.gradle +++ b/libs.gradle @@ -23,6 +23,7 @@ ext { libs.netty = [ transport: "io.netty:netty-transport:${netty_version}", + codec : "io.netty:netty-codec:${netty_version}", handler : "io.netty:netty-handler:${netty_version}" ] diff --git a/protocol-new/build.gradle b/protocol-new/build.gradle index 031565b..fc311c2 100644 --- a/protocol-new/build.gradle +++ b/protocol-new/build.gradle @@ -2,6 +2,7 @@ apply from: rootDir.toPath().resolve('logic.gradle').toFile() dependencies { implementation libs.netty.transport + implementation libs.netty.codec testImplementation libs.lang3 } diff --git a/protocol/src/main/java/mc/protocol/io/codec/ProtocolSplitter.java b/protocol-new/src/main/java/mc/protocol/codec/ProtocolSplitter.java similarity index 97% rename from protocol/src/main/java/mc/protocol/io/codec/ProtocolSplitter.java rename to protocol-new/src/main/java/mc/protocol/codec/ProtocolSplitter.java index 452bb06..b092b94 100644 --- a/protocol/src/main/java/mc/protocol/io/codec/ProtocolSplitter.java +++ b/protocol-new/src/main/java/mc/protocol/codec/ProtocolSplitter.java @@ -1,4 +1,4 @@ -package mc.protocol.io.codec; +package mc.protocol.codec; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; diff --git a/protocol-new/src/test/java/mc/protocol/codec/ProtocolSplitterTest.java b/protocol-new/src/test/java/mc/protocol/codec/ProtocolSplitterTest.java new file mode 100644 index 0000000..2eb17ae --- /dev/null +++ b/protocol-new/src/test/java/mc/protocol/codec/ProtocolSplitterTest.java @@ -0,0 +1,59 @@ +package mc.protocol.codec; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class ProtocolSplitterTest { + + byte[] expectedPacket1Bytes; + byte[] expectedPacket2Bytes; + byte[] bytes; + + @Test + void split() { + prepare(); + + ByteBuf inputBuffer = Unpooled.wrappedBuffer(bytes); + List outputObject = new ArrayList<>(); + + ProtocolSplitter protocolSplitter = new ProtocolSplitter(); + protocolSplitter.decode(null, inputBuffer, outputObject); + + assertEquals(2, outputObject.size()); + assertTrue(outputObject.get(0) instanceof ByteBuf); + assertArrayEquals(expectedPacket1Bytes, ((ByteBuf)outputObject.get(0)).array()); + assertTrue(outputObject.get(1) instanceof ByteBuf); + assertArrayEquals(expectedPacket2Bytes, ((ByteBuf)outputObject.get(1)).array()); + } + + private void prepare() { + /* + +-------------------------------------------------+ + | 0 1 2 3 4 5 6 7 8 9 a b c d e f | + +--------+-------------------------------------------------+----------------+ + |00000000| 10 00 d4 02 09 31 32 37 2e 30 2e 30 2e 31 63 dd |.....127.0.0.1c.| + |00000010| 01 01 00 |... | + +--------+-------------------------------------------------+----------------+ + */ + expectedPacket1Bytes = new byte[]{ + 0x00, (byte) 0xd4, 0x02, 0x09, 0x31, 0x32, 0x37, 0x2e, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x63, + (byte) 0xdd, 0x01 + }; + expectedPacket2Bytes = new byte[]{ + 0x00 + }; + bytes = new byte[2 + expectedPacket1Bytes.length + expectedPacket2Bytes.length]; + bytes[0] = 0x10; + System.arraycopy(expectedPacket1Bytes, 0, + bytes, 1, expectedPacket1Bytes.length); + bytes[1 + expectedPacket1Bytes.length] = 0x01; + System.arraycopy(expectedPacket2Bytes, 0, + bytes, 2 + expectedPacket1Bytes.length, expectedPacket2Bytes.length); + } +} \ No newline at end of file