in src/main/java/com/aliyun/openservices/log/common/FastLogGroup.java [42:101]
private boolean parse() {
int pos = this.beginOffset;
int mode, index;
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;
if (mode == 0) {
pos = value[2];
value = VarintUtil.DecodeVarInt32(this.rawBytes, pos, this.endOffset);
if (value[0] == 0) {
return false;
}
pos = value[2];
} else if (mode == 1) {
pos = value[2] + 8;
} else if (mode == 2) {
switch (index) {
case 1:
//logs
break;
case 2:
this.categoryOffset = pos;
break;
case 3:
this.topicOffset = value[2];
break;
case 4:
this.sourceOffset = value[2];
break;
case 5:
this.machineUUIDOffset = value[2];
break;
case 6:
//tags
break;
default:
}
pos = value[2];
value = VarintUtil.DecodeVarInt32(this.rawBytes, pos, this.endOffset);
if (value[0] == 0) {
return false;
}
pos = value[2] + value[1];
if (index == 1) {
this.logs.add(new FastLog(this.rawBytes, value[2], value[1]));
} else if (index == 6) {
this.tags.add(new FastLogTag(this.rawBytes, value[2], value[1]));
}
} else if (mode == 5) {
pos = value[2] + 4;
} else {
return false;
}
}
return (pos == this.endOffset);
}