in Aliyun/Log/log.proto.php [560:583]
function read($fp, &$limit = PHP_INT_MAX) {
while(!feof($fp) && $limit > 0) {
$tag = Protobuf::read_varint($fp, $limit);
if ($tag === false) break;
$wire = $tag & 0x07;
$field = $tag >> 3;
//var_dump("LogPackageList: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left");
switch($field) {
case 1:
ASSERT('$wire == 2');
$len = Protobuf::read_varint($fp, $limit);
if ($len === false)
throw new Exception('Protobuf::read_varint returned false');
$limit-=$len;
$this->packages_[] = new LogPackage($fp, $len);
ASSERT('$len == 0');
break;
default:
$this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit);
}
}
if (!$this->validateRequired())
throw new Exception('Required fields are missing');
}