in src/main/java/com/aliyun/openservices/log/common/FastLogContent.java [30:69]
private boolean parse() {
int pos = this.beginOffset;
int index, mode;
while (pos < this.endOffset) {
int[] value = VarintUtil.DecodeVarInt32(this.rawBytes, pos, this.endOffset);
if (value[0] == 0) {
return false;
}
mode = value[1] & 0x7;
index = value[1] >> 3;
pos = value[2];
if (mode == 0) {
value = VarintUtil.DecodeVarInt32(this.rawBytes, pos, this.endOffset);
if (value[0] == 0) {
return false;
}
pos = value[2];
} else if (mode == 1) {
pos += 8;
} else if (mode == 2) {
value = VarintUtil.DecodeVarInt32(this.rawBytes, pos, this.endOffset);
if (value[0] == 0) {
return false;
}
pos = value[2] + value[1];
if (index == 1) {
keyOffset = value[2];
keyLength = value[1];
} else if (index == 2) {
valueOffset = value[2];
valueLength = value[1];
}
} else if (mode == 5) {
pos += 4;
} else {
return false;
}
}
return (keyOffset != -1 && valueOffset != -1 && pos == this.endOffset);
}