diff --git a/cache/src/main/kotlin/org/openrs2/cache/VersionTrailer.kt b/cache/src/main/kotlin/org/openrs2/cache/VersionTrailer.kt index c967a28c..14256671 100644 --- a/cache/src/main/kotlin/org/openrs2/cache/VersionTrailer.kt +++ b/cache/src/main/kotlin/org/openrs2/cache/VersionTrailer.kt @@ -3,6 +3,14 @@ package org.openrs2.cache import io.netty.buffer.ByteBuf public object VersionTrailer { + public fun peek(buf: ByteBuf): Int? { + return if (buf.readableBytes() >= 2) { + buf.getUnsignedShort(buf.writerIndex() - 2) + } else { + null + } + } + public fun strip(buf: ByteBuf): Int? { return if (buf.readableBytes() >= 2) { val index = buf.writerIndex() - 2 diff --git a/cache/src/test/kotlin/org/openrs2/cache/VersionTrailerTest.kt b/cache/src/test/kotlin/org/openrs2/cache/VersionTrailerTest.kt index 300c4575..453a39d2 100644 --- a/cache/src/test/kotlin/org/openrs2/cache/VersionTrailerTest.kt +++ b/cache/src/test/kotlin/org/openrs2/cache/VersionTrailerTest.kt @@ -8,6 +8,23 @@ import kotlin.test.assertEquals import kotlin.test.assertNull class VersionTrailerTest { + @Test + fun testPeek() { + assertNull(VersionTrailer.peek(Unpooled.EMPTY_BUFFER)) + + wrappedBuffer(0).use { buf -> + assertNull(VersionTrailer.peek(buf)) + } + + wrappedBuffer(0x12, 0x34).use { buf -> + assertEquals(0x1234, VersionTrailer.peek(buf)) + } + + wrappedBuffer(0x12, 0x34, 0x56).use { buf -> + assertEquals(0x3456, VersionTrailer.peek(buf)) + } + } + @Test fun testStrip() { assertNull(VersionTrailer.strip(Unpooled.EMPTY_BUFFER))