decodeVarint static method
Decodes a varint from bytes, returns (value, bytesConsumed)
Implementation
static (int value, int bytesConsumed) decodeVarint(
Uint8List data, [
int offset = 0,
]) {
var value = 0;
var bytesConsumed = 0;
while (true) {
if (offset + bytesConsumed >= data.length) {
throw ArgumentError('Truncated varint');
}
final byte = data[offset + bytesConsumed];
bytesConsumed++;
final digit = byte & 0x7F;
if (value > (infiniteTimestamp - digit) ~/ 128) {
throw ArgumentError('Varint exceeds the supported integer range');
}
value = value * 128 + digit;
if ((byte & 0x80) == 0) {
return (value, bytesConsumed);
}
}
}