function Message::fieldDataOnlyJsonByteSize
@ignore
1 call to Message::fieldDataOnlyJsonByteSize()
- Message::fieldJsonByteSize in vendor/
google/ protobuf/ src/ Google/ Protobuf/ Internal/ Message.php - @ignore
File
-
vendor/
google/ protobuf/ src/ Google/ Protobuf/ Internal/ Message.php, line 1666
Class
- Message
- Parent class of all proto messages. Users should not instantiate this class or extend this class or its child classes by their own. See the comment of specific functions for more details.
Namespace
Google\Protobuf\InternalCode
private function fieldDataOnlyJsonByteSize($field, $value) {
$size = 0;
switch ($field->getType()) {
case GPBType::SFIXED32:
case GPBType::SINT32:
case GPBType::INT32:
$size += strlen(strval($value));
break;
case GPBType::FIXED32:
case GPBType::UINT32:
if ($value < 0) {
$value = bcadd($value, "4294967296");
}
$size += strlen(strval($value));
break;
case GPBType::FIXED64:
case GPBType::UINT64:
if ($value < 0) {
$value = bcadd($value, "18446744073709551616");
}
// Intentional fall through.
case GPBType::SFIXED64:
case GPBType::INT64:
case GPBType::SINT64:
$size += 2;
// size for ""
$size += strlen(strval($value));
break;
case GPBType::FLOAT:
if (is_nan($value)) {
$size += strlen("NaN") + 2;
}
elseif ($value === INF) {
$size += strlen("Infinity") + 2;
}
elseif ($value === -INF) {
$size += strlen("-Infinity") + 2;
}
else {
$size += strlen(sprintf("%.8g", $value));
}
break;
case GPBType::DOUBLE:
if (is_nan($value)) {
$size += strlen("NaN") + 2;
}
elseif ($value === INF) {
$size += strlen("Infinity") + 2;
}
elseif ($value === -INF) {
$size += strlen("-Infinity") + 2;
}
else {
$size += strlen(sprintf("%.17g", $value));
}
break;
case GPBType::ENUM:
$enum_desc = $field->getEnumType();
if ($enum_desc->getClass() === "Google\\Protobuf\\NullValue") {
$size += 4;
break;
}
$enum_value_desc = $enum_desc->getValueByNumber($value);
if (!is_null($enum_value_desc)) {
$size += 2;
// size for ""
$size += strlen($enum_value_desc->getName());
}
else {
$str_value = strval($value);
$size += strlen($str_value);
}
break;
case GPBType::BOOL:
if ($value) {
$size += 4;
}
else {
$size += 5;
}
break;
case GPBType::STRING:
$value = json_encode($value, JSON_UNESCAPED_UNICODE);
$size += strlen($value);
break;
case GPBType::BYTES:
# if (is_a($this, "Google\Protobuf\BytesValue")) {
# $size += strlen(json_encode($value));
# } else {
# $size += strlen(base64_encode($value));
# $size += 2; // size for \"\"
# }
$size += strlen(base64_encode($value));
$size += 2;
// size for \"\"
break;
case GPBType::MESSAGE:
$size += $value->jsonByteSize();
break;
# case GPBType::GROUP:
# // TODO: Add support.
# user_error("Unsupported type.");
# break;
default:
user_error("Unsupported type " . $field->getType());
return 0;
}
return $size;
}