function ProtobufSerializer::traverseDescriptor
2 calls to ProtobufSerializer::traverseDescriptor()
- ProtobufSerializer::postProcessJsonEnumValues in vendor/
open-telemetry/ exporter-otlp/ ProtobufSerializer.php - Workaround until protobuf exposes `FormatEnumsAsIntegers` option.
- ProtobufSerializer::traverseFieldDescriptor in vendor/
open-telemetry/ exporter-otlp/ ProtobufSerializer.php
File
-
vendor/
open-telemetry/ exporter-otlp/ ProtobufSerializer.php, line 118
Class
- ProtobufSerializer
- @internal @psalm-type SUPPORTED_CONTENT_TYPES = ContentTypes::PROTOBUF|ContentTypes::JSON|ContentTypes::NDJSON
Namespace
OpenTelemetry\Contrib\OtlpCode
private static function traverseDescriptor(object $data, Descriptor $desc) : void {
for ($i = 0, $n = $desc->getFieldCount(); $i < $n; $i++) {
// @phan-suppress-next-line PhanParamTooManyInternal
$field = $desc->getField($i);
$name = lcfirst(strtr(ucwords((string) $field->getName(), '_'), [
'_' => '',
]));
if (!property_exists($data, $name)) {
continue;
}
if ($field->getLabel() === GPBLabel::REPEATED) {
foreach ($data->{$name} as $key => $value) {
$data->{$name}[$key] = self::traverseFieldDescriptor($value, $field);
}
}
else {
$data->{$name} = self::traverseFieldDescriptor($data->{$name}, $field);
}
}
}