From ef2919761d6bd260c7ff11edd5555418fa1e4978 Mon Sep 17 00:00:00 2001 From: Graham Date: Sun, 21 Aug 2022 11:26:55 +0100 Subject: [PATCH] Add method for peeking at the version trailer Signed-off-by: Graham --- .../kotlin/org/openrs2/cache/VersionTrailer.kt | 8 ++++++++ .../org/openrs2/cache/VersionTrailerTest.kt | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) 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))