VarInt class
Пакет: com.hypixel.hytale.protocol.io
Файл: com/hypixel/hytale/protocol/io/VarInt.java
Поля (24)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
OfShort |
BE_SHORT |
|
int |
var1 |
|
int |
var2 |
|
int |
var2 |
|
int |
var2 |
|
long |
var2 |
|
long |
var2 |
|
int |
var2 |
|
byte |
var3 |
|
|
var3 |
|
|
var3 |
|
|
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var4 |
|
int |
var4 |
|
byte |
var5 |
|
|
var5 |
|
|
var5 |
|
|
var5 |
|
byte |
var5 |
|
|
var5 |
|
|
var5 |
|
|
var5 |
Методы (20)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("VarInt cannot encode negative values: " + var1) |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("VarInt cannot encode negative values: " + var2) |
static |
int |
getint get(@Nonnull MemorySegment var0, int var1) |
static |
long |
getWithLengthlong getWithLength(@Nonnull MemorySegment var0, int var1) |
|
|
if if(var1 < 0) |
|
|
if if(var1 >= var2) |
|
|
if if(var1 + 1 >= var2) |
|
|
if if(var1 + 2 >= var2) |
|
|
if if(var1 + 3 >= var2) |
|
|
if if(var1 + 4 >= var2) |
|
|
if if(var1 >= var2) |
|
|
if if(var2 < 0) |
|
|
if if(var1 >= var2) |
static |
int |
lengthint length(@Nonnull ByteBuf var0, int var1) |
static |
int |
lengthint length(@Nonnull MemorySegment var0, int var1) |
static |
int |
peekint peek(@Nonnull ByteBuf var0, int var1) |
static |
int |
readint read(@Nonnull ByteBuf var0) |
static |
int |
setint set(@Nonnull MemorySegment var0, int var1, int var2) |
static |
int |
sizeint size(int var0) |
static |
void |
writevoid write(@Nonnull ByteBuf var0, int var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.protocol.io;
class="kw">import io.netty.buffer.ByteBuf;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import java.lang.foreign.ValueLayout;
class="kw">import java.lang.foreign.ValueLayout.OfInt;
class="kw">import java.lang.foreign.ValueLayout.OfShort;
class="kw">import java.nio.ByteOrder;
class="kw">import javax.annotation.Nonnull;
class="kw">public class="kw">final class VarInt {
class="kw">private class="kw">static class="kw">final OfShort BE_SHORT = ValueLayout.JAVA_SHORT_UNALIGNED.withOrder(ByteOrder.BIG_ENDIAN);
class="kw">private class="kw">static class="kw">final OfInt BE_INT = ValueLayout.JAVA_INT_UNALIGNED.withOrder(ByteOrder.BIG_ENDIAN);
class="kw">private VarInt() {
}
class="kw">public class="kw">static void write(@Nonnull ByteBuf var0, int var1) {
if (var1 < 0) {
throw new IllegalArgumentException("VarInt cannot encode negative values: " + var1);
}
if ((var1 & -128) == 0) {
var0.writeByte(var1);
} else if ((var1 & -16384) == 0) {
var0.writeShort((var1 & 127 | 128) << 8 | var1 >>> 7);
} else if ((var1 & -2097152) == 0) {
var0.writeMedium((var1 & 127 | 128) << 16 | (var1 >>> 7 & 127 | 128) << 8 | var1 >>> 14);
} else if ((var1 & -268435456) == 0) {
var0.writeInt((var1 & 127 | 128) << 24 | (var1 >>> 7 & 127 | 128) << 16 | (var1 >>> 14 & 127 | 128) << 8 | var1 >>> 21);
} else {
var0.writeInt((var1 & 127 | 128) << 24 | (var1 >>> 7 & 127 | 128) << 16 | (var1 >>> 14 & 127 | 128) << 8 | var1 >>> 21 & 127 | 128);
var0.writeByte(var1 >>> 28);
}
}
class="kw">public class="kw">static int read(@Nonnull ByteBuf var0) {
int var1 = var0.readByte();
int var2 = var1 & 127;
if ((var1 & 128) == 0) {
class="kw">return var2;
} else {
byte var3 = var0.readByte();
var2 |= (var3 & 127) << 7;
if ((var3 & 128) == 0) {
class="kw">return var2;
} else {
var3 = var0.readByte();
var2 |= (var3 & 127) << 14;
if ((var3 & 128) == 0) {
class="kw">return var2;
} else {
var3 = var0.readByte();
var2 |= (var3 & 127) << 21;
if ((var3 & 128) == 0) {
class="kw">return var2;
} else {
var3 = var0.readByte();
var2 |= (var3 & 127) << 28;
if ((var3 & 128) == 0) {
class="kw">return var2;
} else {
throw new ProtocolException("VarInt exceeds maximum length (5 bytes)");
}
}
}
}
}
}
class="kw">public class="kw">static int peek(@Nonnull ByteBuf var0, int var1) {
int var2 = var0.writerIndex();
if (var1 >= var2) {
class="kw">return -1;
}
int var3 = var0.getByte(var1);
int var4 = var3 & 127;
if ((var3 & 128) == 0) {
class="kw">return var4;
}
if (var1 + 1 >= var2) {
class="kw">return -1;
}
byte var5 = var0.getByte(var1 + 1);
var4 |= (var5 & 127) << 7;
if ((var5 & 128) == 0) {
class="kw">return var4;
}
if (var1 + 2 >= var2) {
class="kw">return -1;
}
var5 = var0.getByte(var1 + 2);
var4 |= (var5 & 127) << 14;
if ((var5 & 128) == 0) {
class="kw">return var4;
}
if (var1 + 3 >= var2) {
class="kw">return -1;
}
var5 = var0.getByte(var1 + 3);
var4 |= (var5 & 127) << 21;
if ((var5 & 128) == 0) {
class="kw">return var4;
}
if (var1 + 4 >= var2) {
class="kw">return -1;
}
var5 = var0.getByte(var1 + 4);
var4 |= (var5 & 127) << 28;
class="kw">return (var5 & 128) == 0 ? var4 : -1;
}
class="kw">public class="kw">static int length(@Nonnull ByteBuf var0, int var1) {
int var2 = var0.writerIndex();
if (var1 >= var2) {
class="kw">return -1;
} else if ((var0.getByte(var1) & 128) == 0) {
class="kw">return 1;
} else if (var1 + 1 >= var2) {
class="kw">return -1;
} else if ((var0.getByte(var1 + 1) & 128) == 0) {
class="kw">return 2;
} else if (var1 + 2 >= var2) {
class="kw">return -1;
} else if ((var0.getByte(var1 + 2) & 128) == 0) {
class="kw">return 3;
} else if (var1 + 3 >= var2) {
class="kw">return -1;
} else if ((var0.getByte(var1 + 3) & 128) == 0) {
class="kw">return 4;
} else if (var1 + 4 >= var2) {
class="kw">return -1;
} else {
class="kw">return (var0.getByte(var1 + 4) & 128) == 0 ? 5 : -1;
}
}
class="kw">public class="kw">static int length(@Nonnull MemorySegment var0, int var1) {
long var2 = getWithLength(var0, var1);
class="kw">return var2 == -1L ? -1 : (int)(var2 >>> 32);
}
class="kw">public class="kw">static int set(@Nonnull MemorySegment var0, int var1, int var2) {
if (var2 < 0) {
throw new IllegalArgumentException("VarInt cannot encode negative values: " + var2);
} else if ((var2 & -128) == 0) {
var0.set(PacketIO.PROTO_BYTE, var1, (byte)var2);
class="kw">return 1;
} else if ((var2 & -16384) == 0) {
var0.set(BE_SHORT, var1, (short)((var2 & 127 | 128) << 8 | var2 >>> 7));
class="kw">return 2;
} else if ((var2 & -2097152) == 0) {
var0.set(BE_SHORT, var1, (short)((var2 & 127 | 128) << 8 | var2 >>> 7 & 127 | 128));
var0.set(PacketIO.PROTO_BYTE, var1 + 2, (byte)(var2 >>> 14));
class="kw">return 3;
} else if ((var2 & -268435456) == 0) {
var0.set(BE_INT, var1, (var2 & 127 | 128) << 24 | (var2 >>> 7 & 127 | 128) << 16 | (var2 >>> 14 & 127 | 128) << 8 | var2 >>> 21);
class="kw">return 4;
} else {
var0.set(BE_INT, var1, (var2 & 127 | 128) << 24 | (var2 >>> 7 & 127 | 128) << 16 | (var2 >>> 14 & 127 | 128) << 8 | var2 >>> 21 & 127 | 128);
var0.set(PacketIO.PROTO_BYTE, var1 + 4, (byte)(var2 >>> 28));
class="kw">return 5;
}
}
class="kw">public class="kw">static int get(@Nonnull MemorySegment var0, int var1) {
long var2 = getWithLength(var0, var1);
class="kw">return var2 == -1L ? -1 : (int)var2;
}
class="kw">public class="kw">static long getWithLength(@Nonnull MemorySegment var0, int var1) {
int var2 = (int)var0.byteSize();
if (var1 >= var2) {
class="kw">return -1L;
} else {
int var3 = var0.get(PacketIO.PROTO_BYTE, var1);
int var4 = var3 & 127;
if ((var3 & 128) == 0) {
class="kw">return 4294967296L | var4;
} else if (var1 + 1 >= var2) {
class="kw">return -1L;
} else {
byte var5 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
var4 |= (var5 & 127) << 7;
if ((var5 & 128) == 0) {
class="kw">return var5 == 0 ? -1L : 8589934592L | var4;
} else if (var1 + 2 >= var2) {
class="kw">return -1L;
} else {
var5 = var0.get(PacketIO.PROTO_BYTE, var1 + 2);
var4 |= (var5 & 127) << 14;
if ((var5 & 128) == 0) {
class="kw">return var5 == 0 ? -1L : 12884901888L | var4;
} else if (var1 + 3 >= var2) {
class="kw">return -1L;
} else {
var5 = var0.get(PacketIO.PROTO_BYTE, var1 + 3);
var4 |= (var5 & 127) << 21;
if ((var5 & 128) == 0) {
class="kw">return var5 == 0 ? -1L : 17179869184L | var4;
} else if (var1 + 4 >= var2) {
class="kw">return -1L;
} else {
var5 = var0.get(PacketIO.PROTO_BYTE, var1 + 4);
var4 |= (var5 & 7) << 28;
if ((var5 & 128) != 0) {
class="kw">return -1L;
} else {
class="kw">return var5 >= 1 && var5 <= 7 ? 21474836480L | var4 : -1L;
}
}
}
}
}
}
}
class="kw">public class="kw">static int size(int var0) {
if ((var0 & -128) == 0) {
class="kw">return 1;
} else if ((var0 & -16384) == 0) {
class="kw">return 2;
} else if ((var0 & -2097152) == 0) {
class="kw">return 3;
} else {
class="kw">return (var0 & -268435456) == 0 ? 4 : 5;
}
}
}