13
0
geforkt von Mirrors/Velocity

I was nagged to make it more consistent

Dieser Commit ist enthalten in:
Andrew Steinborn 2021-05-03 20:08:16 -04:00
Ursprung 0811ebb312
Commit 0debb81392
2 geänderte Dateien mit 13 neuen und 13 gelöschten Zeilen

Datei anzeigen

@ -61,17 +61,17 @@ public enum ProtocolUtils {
private static final int DEFAULT_MAX_STRING_SIZE = 65536; // 64KiB private static final int DEFAULT_MAX_STRING_SIZE = 65536; // 64KiB
private static final QuietDecoderException BAD_VARINT_CACHED = private static final QuietDecoderException BAD_VARINT_CACHED =
new QuietDecoderException("Bad varint decoded"); new QuietDecoderException("Bad VarInt decoded");
private static final int[] VAR_INT_BYTE_LENGTHS = new int[33]; private static final int[] VARINT_BYTE_LENGTHS = new int[33];
static { static {
// Inspired by https://richardstartin.github.io/posts/dont-use-protobuf-for-telemetry // Inspired by https://richardstartin.github.io/posts/dont-use-protobuf-for-telemetry
// This has been slightly modified in that we reduce the length to 32-bit only, since Velocity // This has been slightly modified in that we reduce the length to 32-bit only, since Velocity
// doesn't look at any part of the Minecraft protocol that requires us to look at VarLongs. // doesn't look at any part of the Minecraft protocol that requires us to look at VarLongs.
for (int i = 0; i <= 32; ++i) { for (int i = 0; i <= 32; ++i) {
VAR_INT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d); VARINT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d);
} }
VAR_INT_BYTE_LENGTHS[32] = 1; // Special case for the number 0. VARINT_BYTE_LENGTHS[32] = 1; // Special case for the number 0.
} }
/** /**
@ -82,7 +82,7 @@ public enum ProtocolUtils {
public static int readVarInt(ByteBuf buf) { public static int readVarInt(ByteBuf buf) {
int read = readVarIntSafely(buf); int read = readVarIntSafely(buf);
if (read == Integer.MIN_VALUE) { if (read == Integer.MIN_VALUE) {
throw MinecraftDecoder.DEBUG ? new CorruptedFrameException("Bad varint decoded") throw MinecraftDecoder.DEBUG ? new CorruptedFrameException("Bad VarInt decoded")
: BAD_VARINT_CACHED; : BAD_VARINT_CACHED;
} }
return read; return read;
@ -108,8 +108,8 @@ public enum ProtocolUtils {
return Integer.MIN_VALUE; return Integer.MIN_VALUE;
} }
public static int varintBytes(int value) { public static int varIntBytes(int value) {
return VAR_INT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)]; return VARINT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)];
} }
/** /**
@ -118,7 +118,7 @@ public enum ProtocolUtils {
* @param value the integer to write * @param value the integer to write
*/ */
public static void writeVarInt(ByteBuf buf, int value) { public static void writeVarInt(ByteBuf buf, int value) {
int length = varintBytes(value); int length = varIntBytes(value);
for (int i = 0; i < length; ++i) { for (int i = 0; i < length; ++i) {
buf.writeByte(((byte) ((value & 0x7F) | 0x80))); buf.writeByte(((byte) ((value & 0x7F) | 0x80)));
value >>>= 7; value >>>= 7;

Datei anzeigen

@ -25,21 +25,21 @@ public class ProtocolUtilsTest {
@Test @Test
void negativeVarIntBytes() { void negativeVarIntBytes() {
assertEquals(5, ProtocolUtils.varintBytes(-1)); assertEquals(5, ProtocolUtils.varIntBytes(-1));
assertEquals(5, ProtocolUtils.varintBytes(Integer.MIN_VALUE)); assertEquals(5, ProtocolUtils.varIntBytes(Integer.MIN_VALUE));
} }
@Test @Test
void zeroVarIntBytes() { void zeroVarIntBytes() {
assertEquals(1, ProtocolUtils.varintBytes(0)); assertEquals(1, ProtocolUtils.varIntBytes(0));
assertEquals(1, ProtocolUtils.varintBytes(1)); assertEquals(1, ProtocolUtils.varIntBytes(1));
} }
@Test @Test
void ensureConsistencyAcrossNumberBits() { void ensureConsistencyAcrossNumberBits() {
for (int i = 0; i <= 31; i++) { for (int i = 0; i <= 31; i++) {
int number = (1 << i) - 1; int number = (1 << i) - 1;
assertEquals(conventionalWrittenBytes(number), ProtocolUtils.varintBytes(number), assertEquals(conventionalWrittenBytes(number), ProtocolUtils.varIntBytes(number),
"mismatch with " + i + "-bit number"); "mismatch with " + i + "-bit number");
} }
} }