From d312c0b8b113824f68d5e702f0206c0336034b30 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Fri, 16 Sep 2022 12:38:58 -0600 Subject: [PATCH 1/8] add logger handler which acts as LoggerProvider/Logger This is a very simple version of what is needed to support the logging spec and is in part duplicating code from the batch span processor. It has no overload protection and this will wait until we know what is planned for log sampling in the spec as it will overlap. --- .../src/otel_batch_processor.erl | 2 +- apps/opentelemetry/src/otel_exporter.erl | 4 + apps/opentelemetry_api/src/opentelemetry.erl | 10 + .../src/otel_log_handler.erl | 242 ++ apps/opentelemetry_exporter/rebar.config | 3 +- .../src/opentelemetry_exporter.erl | 18 + ...opentelemetry_exporter_logs_service_pb.erl | 3085 +++++++++++++++++ ...ntelemetry_exporter_metrics_service_pb.erl | 917 +++-- ...pentelemetry_exporter_trace_service_pb.erl | 928 +++-- .../src/opentelemetry_logs_service.erl | 43 + .../src/otel_otlp_common.erl | 20 +- .../src/otel_otlp_logs.erl | 234 ++ config/otel-collector-config.yaml | 6 + config/sys.config | 5 + docker-compose.yml | 1 + rebar.config | 5 +- 16 files changed, 4452 insertions(+), 1071 deletions(-) create mode 100644 apps/opentelemetry_experimental/src/otel_log_handler.erl create mode 100644 apps/opentelemetry_exporter/src/opentelemetry_exporter_logs_service_pb.erl create mode 100644 apps/opentelemetry_exporter/src/opentelemetry_logs_service.erl create mode 100644 apps/opentelemetry_exporter/src/otel_otlp_logs.erl diff --git a/apps/opentelemetry/src/otel_batch_processor.erl b/apps/opentelemetry/src/otel_batch_processor.erl index 5e55bfb8..93e69df1 100644 --- a/apps/opentelemetry/src/otel_batch_processor.erl +++ b/apps/opentelemetry/src/otel_batch_processor.erl @@ -385,5 +385,5 @@ report_cb(#{source := exporter, reason := Reason, exporter := ExporterModule, stacktrace := StackTrace}) -> - {"exporter threw exception: exporter=~p ~ts", + {"span exporter threw exception: exporter=~p ~ts", [ExporterModule, otel_utils:format_exception(Kind, Reason, StackTrace)]}. diff --git a/apps/opentelemetry/src/otel_exporter.erl b/apps/opentelemetry/src/otel_exporter.erl index 4134d051..7a152532 100644 --- a/apps/opentelemetry/src/otel_exporter.erl +++ b/apps/opentelemetry/src/otel_exporter.erl @@ -20,6 +20,7 @@ -export([init/1, export_traces/4, export_metrics/4, + export_logs/4, shutdown/1, report_cb/1]). @@ -121,6 +122,9 @@ export_traces(ExporterModule, SpansTid, Resource, Config) -> export_metrics(ExporterModule, MetricsTid, Resource, Config) -> ExporterModule:export(metrics, MetricsTid, Resource, Config). +export_logs(ExporterModule, Batch, Resource, Config) -> + ExporterModule:export(logs, Batch, Resource, Config). + shutdown(undefined) -> ok; shutdown({ExporterModule, Config}) -> diff --git a/apps/opentelemetry_api/src/opentelemetry.erl b/apps/opentelemetry_api/src/opentelemetry.erl index bc4cc093..98af554f 100644 --- a/apps/opentelemetry_api/src/opentelemetry.erl +++ b/apps/opentelemetry_api/src/opentelemetry.erl @@ -36,6 +36,7 @@ set_tracer/2, get_application/1, get_application_tracer/1, + get_application_scope/1, set_text_map_propagator/1, set_text_map_extractor/1, get_text_map_extractor/0, @@ -224,6 +225,15 @@ get_tracer(Name, Vsn, SchemaUrl) -> get_application_tracer(ModuleName) -> get_tracer(get_application(ModuleName)). +-spec get_application_scope(module()) -> tracer(). +get_application_scope(ModuleName) -> + case get_application(ModuleName) of + {Name, Vsn, SchemaUrl} -> + instrumentation_scope(Name, Vsn, SchemaUrl); + _ -> + instrumentation_scope(<<>>, <<>>, <<>>) + end. + %% looks up the name, version and schema_url used to create a Trace for the OTP %% Application a module is in. This name is used to look up a Tracer to use so %% if none is found for the ModuleName the key used for the default tracer. diff --git a/apps/opentelemetry_experimental/src/otel_log_handler.erl b/apps/opentelemetry_experimental/src/otel_log_handler.erl new file mode 100644 index 00000000..973ac489 --- /dev/null +++ b/apps/opentelemetry_experimental/src/otel_log_handler.erl @@ -0,0 +1,242 @@ +%%%------------------------------------------------------------------------ +%% Copyright 2022, OpenTelemetry Authors +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% @doc +%% @end +%%%------------------------------------------------------------------------- +-module(otel_log_handler). + +-behaviour(gen_statem). + +-include_lib("kernel/include/logger.hrl"). +-include_lib("opentelemetry_api/include/opentelemetry.hrl"). + +-export([start_link/2]). + +-export([log/2, + adding_handler/1, + removing_handler/1, + changing_config/3, + filter_config/1, + report_cb/1]). + +-export([init/1, + callback_mode/0, + idle/3, + exporting/3, + handle_event/3]). + +-define(DEFAULT_CALL_TIMEOUT, 5000). +-define(DEFAULT_MAX_QUEUE_SIZE, 2048). +-define(DEFAULT_SCHEDULED_DELAY_MS, timer:seconds(5)). +-define(DEFAULT_EXPORTER_TIMEOUT_MS, timer:minutes(5)). + +-define(name_to_reg_name(Module, Id), + list_to_atom(lists:concat([Module, "_", Id]))). + +-record(data, {exporter :: {module(), term()} | undefined, + exporter_config :: {module(), term()} | undefined, + resource :: otel_resource:t(), + + runner_pid :: pid() | undefined, + max_queue_size :: integer() | infinity, + exporting_timeout_ms :: integer(), + check_table_size_ms :: integer() | infinity, + scheduled_delay_ms :: integer(), + + config :: #{}, + batch :: #{opentelemetry:instrumentation_scope() => [logger:log_event()]}}). + +start_link(RegName, Config) -> + gen_statem:start_link({local, RegName}, ?MODULE, [RegName, Config], []). + +-spec adding_handler(Config) -> {ok, Config} | {error, Reason} when + Config :: logger:handler_config(), + Reason :: term(). +adding_handler(#{id := Id, + module := Module}=Config) -> + RegName = ?name_to_reg_name(Module, Id), + ChildSpec = + #{id => Id, + start => {?MODULE, start_link, [RegName, Config]}, + restart => temporary, + shutdown => 2000, + type => worker, + modules => [?MODULE]}, + case supervisor:start_child(opentelemetry_experimental_sup, ChildSpec) of + {ok, _Pid} -> + %% ok = logger_handler_watcher:register_handler(Name,Pid), + %% OlpOpts = logger_olp:get_opts(Olp), + {ok, Config#{regname => RegName}}; + {error, {Reason, Ch}} when is_tuple(Ch), element(1, Ch) == child -> + {error, Reason}; + Error -> + Error + end. + +%%%----------------------------------------------------------------- +%%% Updating handler config +-spec changing_config(SetOrUpdate, OldConfig, NewConfig) -> + {ok,Config} | {error,Reason} when + SetOrUpdate :: set | update, + OldConfig :: logger:handler_config(), + NewConfig :: logger:handler_config(), + Config :: logger:handler_config(), + Reason :: term(). +changing_config(SetOrUpdate, OldConfig, NewConfig=#{regname := Id}) -> + gen_statem:call(Id, {changing_config, SetOrUpdate, OldConfig, NewConfig}). + +%%%----------------------------------------------------------------- +%%% Handler being removed +-spec removing_handler(Config) -> ok when + Config :: logger:handler_config(). +removing_handler(Config=#{regname := Id}) -> + gen_statem:call(Id, {removing_handler, Config}). + +%%%----------------------------------------------------------------- +%%% Log a string or report +-spec log(LogEvent, Config) -> ok when + LogEvent :: logger:log_event(), + Config :: logger:handler_config(). +log(LogEvent, _Config=#{regname := Id}) -> + Scope = case LogEvent of + #{meta := #{otel_scope := Scope0=#instrumentation_scope{}}} -> + Scope0; + #{meta := #{mfa := {Module, _, _}}} -> + opentelemetry:get_application_scope(Module); + _ -> + opentelemetry:instrumentation_scope(<<>>, <<>>, <<>>) + end, + + gen_statem:cast(Id, {log, Scope, LogEvent}). + +%%%----------------------------------------------------------------- +%%% Remove internal fields from configuration +-spec filter_config(Config) -> Config when + Config :: logger:handler_config(). +filter_config(Config=#{regname := Id}) -> + gen_statem:call(Id, {filter_config, Config}). + +init([_RegName, Config]) -> + process_flag(trap_exit, true), + + Resource = otel_resource_detector:get_resource(), + + SizeLimit = maps:get(max_queue_size, Config, ?DEFAULT_MAX_QUEUE_SIZE), + ExportingTimeout = maps:get(exporting_timeout_ms, Config, ?DEFAULT_EXPORTER_TIMEOUT_MS), + ScheduledDelay = maps:get(scheduled_delay_ms, Config, ?DEFAULT_SCHEDULED_DELAY_MS), + + ExporterConfig = maps:get(exporter, Config, {opentelemetry_exporter, #{protocol => grpc}}), + + {ok, idle, #data{exporter=undefined, + exporter_config=ExporterConfig, + resource=Resource, + config=Config, + max_queue_size=case SizeLimit of + infinity -> infinity; + _ -> SizeLimit div erlang:system_info(wordsize) + end, + exporting_timeout_ms=ExportingTimeout, + scheduled_delay_ms=ScheduledDelay, + batch=#{}}}. + +callback_mode() -> + [state_functions, state_enter]. + +idle(enter, _OldState, Data=#data{exporter=undefined, + exporter_config=ExporterConfig, + scheduled_delay_ms=SendInterval}) -> + Exporter = init_exporter(ExporterConfig), + {keep_state, Data#data{exporter=Exporter}, + [{{timeout, export_logs}, SendInterval, export_logs}]}; +idle(enter, _OldState, #data{scheduled_delay_ms=SendInterval}) -> + {keep_state_and_data, [{{timeout, export_logs}, SendInterval, export_logs}]}; +idle(_, export_logs, Data=#data{exporter=undefined, + exporter_config=ExporterConfig}) -> + Exporter = init_exporter(ExporterConfig), + {next_state, exporting, Data#data{exporter=Exporter}, [{next_event, internal, export}]}; +idle(_, export_logs, Data) -> + {next_state, exporting, Data, [{next_event, internal, export}]}; +idle(EventType, EventContent, Data) -> + handle_event(EventType, EventContent, Data). + +exporting({timeout, export_logs}, export_logs, _) -> + {keep_state_and_data, [postpone]}; +exporting(enter, _OldState, _Data) -> + keep_state_and_data; +exporting(internal, export, Data=#data{exporter=Exporter, + resource=Resource, + config=Config, + batch=Batch}) when map_size(Batch) =/= 0 -> + _ = export(Exporter, Resource, Batch, Config), + {next_state, idle, Data#data{batch=#{}}}; +exporting(EventType, EventContent, Data) -> + handle_event(EventType, EventContent, Data). + +handle_event({call, From}, {changing_config, _SetOrUpdate, _OldConfig, NewConfig}, Data) -> + {keep_state, Data=#data{config=NewConfig}, [{reply, From, NewConfig}]}; +handle_event({call, From}, {removing_handler, Config}, _Data) -> + %% TODO: flush + {keep_state_and_data, [{reply, From, Config}]}; +handle_event({call, From}, {filter_handler, Config}, Data) -> + {keep_state, Data, [{reply, From, Config}]}; +handle_event({call, From}, {filter_config, Config}, Data) -> + {keep_state, Data, [{reply, From, Config}]}; +handle_event({call, _From}, _Msg, _Data) -> + keep_state_and_data; +handle_event(cast, {log, Scope, LogEvent}, Data=#data{batch=Logs}) -> + {keep_state, Data#data{batch=maps:update_with(Scope, fun(V) -> + [LogEvent | V] + end, [LogEvent], Logs)}}; +handle_event(_, _, _) -> + keep_state_and_data. + +%% + +init_exporter(ExporterConfig) -> + case otel_exporter:init(ExporterConfig) of + Exporter when Exporter =/= undefined andalso Exporter =/= none -> + Exporter; + _ -> + undefined + end. + +export(undefined, _, _, _) -> + true; +export({ExporterModule, ExporterConfig}, Resource, Batch, Config) -> + %% don't let a exporter exception crash us + %% and return true if exporter failed + try + otel_exporter:export_logs(ExporterModule, {Batch, Config}, Resource, ExporterConfig) + =:= failed_not_retryable + catch + Kind:Reason:StackTrace -> + ?LOG_WARNING(#{source => exporter, + during => export, + kind => Kind, + reason => Reason, + exporter => ExporterModule, + stacktrace => StackTrace}, #{report_cb => fun ?MODULE:report_cb/1}), + true + end. + +%% logger format functions +report_cb(#{source := exporter, + during := export, + kind := Kind, + reason := Reason, + exporter := ExporterModule, + stacktrace := StackTrace}) -> + {"log exporter threw exception: exporter=~p ~ts", + [ExporterModule, otel_utils:format_exception(Kind, Reason, StackTrace)]}. diff --git a/apps/opentelemetry_exporter/rebar.config b/apps/opentelemetry_exporter/rebar.config index 3c9b02ab..3ff2f1be 100644 --- a/apps/opentelemetry_exporter/rebar.config +++ b/apps/opentelemetry_exporter/rebar.config @@ -5,7 +5,8 @@ {opentelemetry_api, "~> 1.1"}]}. {grpc, [{protos, ["opentelemetry-proto/opentelemetry/proto/collector/trace/v1", - "opentelemetry-proto/opentelemetry/proto/collector/metrics/v1"]}, + "opentelemetry-proto/opentelemetry/proto/collector/metrics/v1", + "opentelemetry-proto/opentelemetry/proto/collector/logs/v1"]}, {gpb_opts, [{module_name_prefix, "opentelemetry_exporter_"}, {module_name_suffix, "_pb"}, {i, "apps/opentelemetry_exporter/opentelemetry-proto/"}]}]}. diff --git a/apps/opentelemetry_exporter/src/opentelemetry_exporter.erl b/apps/opentelemetry_exporter/src/opentelemetry_exporter.erl index 28024cab..e30a66c6 100644 --- a/apps/opentelemetry_exporter/src/opentelemetry_exporter.erl +++ b/apps/opentelemetry_exporter/src/opentelemetry_exporter.erl @@ -273,6 +273,24 @@ export(metrics, Tab, Resource, #state{protocol=grpc, ?LOG_INFO("OTLP grpc export failed with error: ~p", [Reason]), error end; +export(logs, {Logs, Config}, Resource, #state{protocol=grpc, + grpc_metadata=Metadata, + channel_pid=_ChannelPid}) -> + ExportRequest = otel_otlp_logs:to_proto(Logs, Resource, Config), + Ctx = grpcbox_metadata:append_to_outgoing_ctx(ctx:new(), Metadata), + case opentelemetry_logs_service:export(Ctx, ExportRequest, #{channel => ?MODULE}) of + {ok, _Response, _ResponseMetadata} -> + ok; + {error, {Status, Message}, _} -> + ?LOG_INFO("OTLP grpc export failed with GRPC status ~s : ~s", [Status, Message]), + error; + {http_error, {Status, _}, _} -> + ?LOG_INFO("OTLP grpc export failed with HTTP status code ~s", [Status]), + error; + {error, Reason} -> + ?LOG_INFO("OTLP grpc export failed with error: ~p", [Reason]), + error + end; export(_, _Tab, _Resource, _State) -> {error, unimplemented}. diff --git a/apps/opentelemetry_exporter/src/opentelemetry_exporter_logs_service_pb.erl b/apps/opentelemetry_exporter/src/opentelemetry_exporter_logs_service_pb.erl new file mode 100644 index 00000000..5e28c439 --- /dev/null +++ b/apps/opentelemetry_exporter/src/opentelemetry_exporter_logs_service_pb.erl @@ -0,0 +1,3085 @@ +%% -*- coding: utf-8 -*- +%% @private +%% Automatically generated, do not edit +%% Generated by gpb_compile version 4.19.5 +%% Version source: file +-module(opentelemetry_exporter_logs_service_pb). + +-export([encode_msg/2, encode_msg/3]). +-export([decode_msg/2, decode_msg/3]). +-export([merge_msgs/3, merge_msgs/4]). +-export([verify_msg/2, verify_msg/3]). +-export([get_msg_defs/0]). +-export([get_msg_names/0]). +-export([get_group_names/0]). +-export([get_msg_or_group_names/0]). +-export([get_enum_names/0]). +-export([find_msg_def/1, fetch_msg_def/1]). +-export([find_enum_def/1, fetch_enum_def/1]). +-export([enum_symbol_by_value/2, enum_value_by_symbol/2]). +-export(['enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'/1, 'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'/1]). +-export(['enum_symbol_by_value_opentelemetry.proto.logs.v1.LogRecordFlags'/1, 'enum_value_by_symbol_opentelemetry.proto.logs.v1.LogRecordFlags'/1]). +-export([get_service_names/0]). +-export([get_service_def/1]). +-export([get_rpc_names/1]). +-export([find_rpc_def/2, fetch_rpc_def/2]). +-export([fqbin_to_service_name/1]). +-export([service_name_to_fqbin/1]). +-export([fqbins_to_service_and_rpc_name/2]). +-export([service_and_rpc_name_to_fqbins/2]). +-export([fqbin_to_msg_name/1]). +-export([msg_name_to_fqbin/1]). +-export([fqbin_to_enum_name/1]). +-export([enum_name_to_fqbin/1]). +-export([get_package_name/0]). +-export([uses_packages/0]). +-export([source_basename/0]). +-export([get_all_source_basenames/0]). +-export([get_all_proto_names/0]). +-export([get_msg_containment/1]). +-export([get_pkg_containment/1]). +-export([get_service_containment/1]). +-export([get_rpc_containment/1]). +-export([get_enum_containment/1]). +-export([get_proto_by_msg_name_as_fqbin/1]). +-export([get_proto_by_service_name_as_fqbin/1]). +-export([get_proto_by_enum_name_as_fqbin/1]). +-export([get_protos_by_pkg_name_as_fqbin/1]). +-export([gpb_version_as_string/0, gpb_version_as_list/0]). +-export([gpb_version_source/0]). + + +%% enumerated types +-type 'opentelemetry.proto.logs.v1.SeverityNumber'() :: 'SEVERITY_NUMBER_UNSPECIFIED' | 'SEVERITY_NUMBER_TRACE' | 'SEVERITY_NUMBER_TRACE2' | 'SEVERITY_NUMBER_TRACE3' | 'SEVERITY_NUMBER_TRACE4' | 'SEVERITY_NUMBER_DEBUG' | 'SEVERITY_NUMBER_DEBUG2' | 'SEVERITY_NUMBER_DEBUG3' | 'SEVERITY_NUMBER_DEBUG4' | 'SEVERITY_NUMBER_INFO' | 'SEVERITY_NUMBER_INFO2' | 'SEVERITY_NUMBER_INFO3' | 'SEVERITY_NUMBER_INFO4' | 'SEVERITY_NUMBER_WARN' | 'SEVERITY_NUMBER_WARN2' | 'SEVERITY_NUMBER_WARN3' | 'SEVERITY_NUMBER_WARN4' | 'SEVERITY_NUMBER_ERROR' | 'SEVERITY_NUMBER_ERROR2' | 'SEVERITY_NUMBER_ERROR3' | 'SEVERITY_NUMBER_ERROR4' | 'SEVERITY_NUMBER_FATAL' | 'SEVERITY_NUMBER_FATAL2' | 'SEVERITY_NUMBER_FATAL3' | 'SEVERITY_NUMBER_FATAL4'. +-type 'opentelemetry.proto.logs.v1.LogRecordFlags'() :: 'LOG_RECORD_FLAG_UNSPECIFIED' | 'LOG_RECORD_FLAG_TRACE_FLAGS_MASK'. +-export_type(['opentelemetry.proto.logs.v1.SeverityNumber'/0, 'opentelemetry.proto.logs.v1.LogRecordFlags'/0]). + +%% message types +-type export_logs_service_request() :: + #{resource_logs => [resource_logs()] % = 1, repeated + }. + +-type export_logs_service_response() :: + #{partial_success => export_logs_partial_success() % = 1, optional + }. + +-type export_logs_partial_success() :: + #{rejected_log_records => integer(), % = 1, optional, 64 bits + error_message => unicode:chardata() % = 2, optional + }. + +-type logs_data() :: + #{resource_logs => [resource_logs()] % = 1, repeated + }. + +-type resource_logs() :: + #{resource => resource(), % = 1, optional + scope_logs => [scope_logs()], % = 2, repeated + schema_url => unicode:chardata() % = 3, optional + }. + +-type scope_logs() :: + #{scope => instrumentation_scope(), % = 1, optional + log_records => [log_record()], % = 2, repeated + schema_url => unicode:chardata() % = 3, optional + }. + +-type log_record() :: + #{time_unix_nano => non_neg_integer(), % = 1, optional, 64 bits + observed_time_unix_nano => non_neg_integer(), % = 11, optional, 64 bits + severity_number => 'SEVERITY_NUMBER_UNSPECIFIED' | 'SEVERITY_NUMBER_TRACE' | 'SEVERITY_NUMBER_TRACE2' | 'SEVERITY_NUMBER_TRACE3' | 'SEVERITY_NUMBER_TRACE4' | 'SEVERITY_NUMBER_DEBUG' | 'SEVERITY_NUMBER_DEBUG2' | 'SEVERITY_NUMBER_DEBUG3' | 'SEVERITY_NUMBER_DEBUG4' | 'SEVERITY_NUMBER_INFO' | 'SEVERITY_NUMBER_INFO2' | 'SEVERITY_NUMBER_INFO3' | 'SEVERITY_NUMBER_INFO4' | 'SEVERITY_NUMBER_WARN' | 'SEVERITY_NUMBER_WARN2' | 'SEVERITY_NUMBER_WARN3' | 'SEVERITY_NUMBER_WARN4' | 'SEVERITY_NUMBER_ERROR' | 'SEVERITY_NUMBER_ERROR2' | 'SEVERITY_NUMBER_ERROR3' | 'SEVERITY_NUMBER_ERROR4' | 'SEVERITY_NUMBER_FATAL' | 'SEVERITY_NUMBER_FATAL2' | 'SEVERITY_NUMBER_FATAL3' | 'SEVERITY_NUMBER_FATAL4' | integer(), % = 2, optional, enum opentelemetry.proto.logs.v1.SeverityNumber + severity_text => unicode:chardata(), % = 3, optional + body => any_value(), % = 5, optional + attributes => [key_value()], % = 6, repeated + dropped_attributes_count => non_neg_integer(), % = 7, optional, 32 bits + flags => non_neg_integer(), % = 8, optional, 32 bits + trace_id => iodata(), % = 9, optional + span_id => iodata() % = 10, optional + }. + +-type any_value() :: + #{value => {string_value, unicode:chardata()} | {bool_value, boolean() | 0 | 1} | {int_value, integer()} | {double_value, float() | integer() | infinity | '-infinity' | nan} | {array_value, array_value()} | {kvlist_value, key_value_list()} | {bytes_value, iodata()} % oneof + }. + +-type array_value() :: + #{values => [any_value()] % = 1, repeated + }. + +-type key_value_list() :: + #{values => [key_value()] % = 1, repeated + }. + +-type key_value() :: + #{key => unicode:chardata(), % = 1, optional + value => any_value() % = 2, optional + }. + +-type instrumentation_scope() :: + #{name => unicode:chardata(), % = 1, optional + version => unicode:chardata(), % = 2, optional + attributes => [key_value()], % = 3, repeated + dropped_attributes_count => non_neg_integer() % = 4, optional, 32 bits + }. + +-type resource() :: + #{attributes => [key_value()], % = 1, repeated + dropped_attributes_count => non_neg_integer() % = 2, optional, 32 bits + }. + +-export_type(['export_logs_service_request'/0, 'export_logs_service_response'/0, 'export_logs_partial_success'/0, 'logs_data'/0, 'resource_logs'/0, 'scope_logs'/0, 'log_record'/0, 'any_value'/0, 'array_value'/0, 'key_value_list'/0, 'key_value'/0, 'instrumentation_scope'/0, 'resource'/0]). +-type '$msg_name'() :: export_logs_service_request | export_logs_service_response | export_logs_partial_success | logs_data | resource_logs | scope_logs | log_record | any_value | array_value | key_value_list | key_value | instrumentation_scope | resource. +-type '$msg'() :: export_logs_service_request() | export_logs_service_response() | export_logs_partial_success() | logs_data() | resource_logs() | scope_logs() | log_record() | any_value() | array_value() | key_value_list() | key_value() | instrumentation_scope() | resource(). +-export_type(['$msg_name'/0, '$msg'/0]). + +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/2}). +-endif. +-spec encode_msg('$msg'(), '$msg_name'()) -> binary(). +encode_msg(Msg, MsgName) when is_atom(MsgName) -> encode_msg(Msg, MsgName, []). + +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/3}). +-endif. +-spec encode_msg('$msg'(), '$msg_name'(), list()) -> binary(). +encode_msg(Msg, MsgName, Opts) -> + case proplists:get_bool(verify, Opts) of + true -> verify_msg(Msg, MsgName, Opts); + false -> ok + end, + TrUserData = proplists:get_value(user_data, Opts), + case MsgName of + export_logs_service_request -> encode_msg_export_logs_service_request(id(Msg, TrUserData), TrUserData); + export_logs_service_response -> encode_msg_export_logs_service_response(id(Msg, TrUserData), TrUserData); + export_logs_partial_success -> encode_msg_export_logs_partial_success(id(Msg, TrUserData), TrUserData); + logs_data -> encode_msg_logs_data(id(Msg, TrUserData), TrUserData); + resource_logs -> encode_msg_resource_logs(id(Msg, TrUserData), TrUserData); + scope_logs -> encode_msg_scope_logs(id(Msg, TrUserData), TrUserData); + log_record -> encode_msg_log_record(id(Msg, TrUserData), TrUserData); + any_value -> encode_msg_any_value(id(Msg, TrUserData), TrUserData); + array_value -> encode_msg_array_value(id(Msg, TrUserData), TrUserData); + key_value_list -> encode_msg_key_value_list(id(Msg, TrUserData), TrUserData); + key_value -> encode_msg_key_value(id(Msg, TrUserData), TrUserData); + instrumentation_scope -> encode_msg_instrumentation_scope(id(Msg, TrUserData), TrUserData); + resource -> encode_msg_resource(id(Msg, TrUserData), TrUserData) + end. + + +encode_msg_export_logs_service_request(Msg, TrUserData) -> encode_msg_export_logs_service_request(Msg, <<>>, TrUserData). + + +encode_msg_export_logs_service_request(#{} = M, Bin, TrUserData) -> + case M of + #{resource_logs := F1} -> + TrF1 = id(F1, TrUserData), + if TrF1 == [] -> Bin; + true -> e_field_export_logs_service_request_resource_logs(TrF1, Bin, TrUserData) + end; + _ -> Bin + end. + +encode_msg_export_logs_service_response(Msg, TrUserData) -> encode_msg_export_logs_service_response(Msg, <<>>, TrUserData). + + +encode_msg_export_logs_service_response(#{} = M, Bin, TrUserData) -> + case M of + #{partial_success := F1} -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> e_mfield_export_logs_service_response_partial_success(TrF1, <>, TrUserData) + end + end; + _ -> Bin + end. + +encode_msg_export_logs_partial_success(Msg, TrUserData) -> encode_msg_export_logs_partial_success(Msg, <<>>, TrUserData). + + +encode_msg_export_logs_partial_success(#{} = M, Bin, TrUserData) -> + B1 = case M of + #{rejected_log_records := F1} -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_type_int64(TrF1, <>, TrUserData) + end + end; + _ -> Bin + end, + case M of + #{error_message := F2} -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end; + _ -> B1 + end. + +encode_msg_logs_data(Msg, TrUserData) -> encode_msg_logs_data(Msg, <<>>, TrUserData). + + +encode_msg_logs_data(#{} = M, Bin, TrUserData) -> + case M of + #{resource_logs := F1} -> + TrF1 = id(F1, TrUserData), + if TrF1 == [] -> Bin; + true -> e_field_logs_data_resource_logs(TrF1, Bin, TrUserData) + end; + _ -> Bin + end. + +encode_msg_resource_logs(Msg, TrUserData) -> encode_msg_resource_logs(Msg, <<>>, TrUserData). + + +encode_msg_resource_logs(#{} = M, Bin, TrUserData) -> + B1 = case M of + #{resource := F1} -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> e_mfield_resource_logs_resource(TrF1, <>, TrUserData) + end + end; + _ -> Bin + end, + B2 = case M of + #{scope_logs := F2} -> + TrF2 = id(F2, TrUserData), + if TrF2 == [] -> B1; + true -> e_field_resource_logs_scope_logs(TrF2, B1, TrUserData) + end; + _ -> B1 + end, + case M of + #{schema_url := F3} -> + begin + TrF3 = id(F3, TrUserData), + case is_empty_string(TrF3) of + true -> B2; + false -> e_type_string(TrF3, <>, TrUserData) + end + end; + _ -> B2 + end. + +encode_msg_scope_logs(Msg, TrUserData) -> encode_msg_scope_logs(Msg, <<>>, TrUserData). + + +encode_msg_scope_logs(#{} = M, Bin, TrUserData) -> + B1 = case M of + #{scope := F1} -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> e_mfield_scope_logs_scope(TrF1, <>, TrUserData) + end + end; + _ -> Bin + end, + B2 = case M of + #{log_records := F2} -> + TrF2 = id(F2, TrUserData), + if TrF2 == [] -> B1; + true -> e_field_scope_logs_log_records(TrF2, B1, TrUserData) + end; + _ -> B1 + end, + case M of + #{schema_url := F3} -> + begin + TrF3 = id(F3, TrUserData), + case is_empty_string(TrF3) of + true -> B2; + false -> e_type_string(TrF3, <>, TrUserData) + end + end; + _ -> B2 + end. + +encode_msg_log_record(Msg, TrUserData) -> encode_msg_log_record(Msg, <<>>, TrUserData). + + +encode_msg_log_record(#{} = M, Bin, TrUserData) -> + B1 = case M of + #{time_unix_nano := F1} -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_type_fixed64(TrF1, <>, TrUserData) + end + end; + _ -> Bin + end, + B2 = case M of + #{observed_time_unix_nano := F2} -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_type_fixed64(TrF2, <>, TrUserData) + end + end; + _ -> B1 + end, + B3 = case M of + #{severity_number := F3} -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= 'SEVERITY_NUMBER_UNSPECIFIED'; TrF3 =:= 0 -> B2; + true -> 'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'(TrF3, <>, TrUserData) + end + end; + _ -> B2 + end, + B4 = case M of + #{severity_text := F4} -> + begin + TrF4 = id(F4, TrUserData), + case is_empty_string(TrF4) of + true -> B3; + false -> e_type_string(TrF4, <>, TrUserData) + end + end; + _ -> B3 + end, + B5 = case M of + #{body := F5} -> + begin + TrF5 = id(F5, TrUserData), + if TrF5 =:= undefined -> B4; + true -> e_mfield_log_record_body(TrF5, <>, TrUserData) + end + end; + _ -> B4 + end, + B6 = case M of + #{attributes := F6} -> + TrF6 = id(F6, TrUserData), + if TrF6 == [] -> B5; + true -> e_field_log_record_attributes(TrF6, B5, TrUserData) + end; + _ -> B5 + end, + B7 = case M of + #{dropped_attributes_count := F7} -> + begin + TrF7 = id(F7, TrUserData), + if TrF7 =:= 0 -> B6; + true -> e_varint(TrF7, <>, TrUserData) + end + end; + _ -> B6 + end, + B8 = case M of + #{flags := F8} -> + begin + TrF8 = id(F8, TrUserData), + if TrF8 =:= 0 -> B7; + true -> e_type_fixed32(TrF8, <>, TrUserData) + end + end; + _ -> B7 + end, + B9 = case M of + #{trace_id := F9} -> + begin + TrF9 = id(F9, TrUserData), + case iolist_size(TrF9) of + 0 -> B8; + _ -> e_type_bytes(TrF9, <>, TrUserData) + end + end; + _ -> B8 + end, + case M of + #{span_id := F10} -> + begin + TrF10 = id(F10, TrUserData), + case iolist_size(TrF10) of + 0 -> B9; + _ -> e_type_bytes(TrF10, <>, TrUserData) + end + end; + _ -> B9 + end. + +encode_msg_any_value(Msg, TrUserData) -> encode_msg_any_value(Msg, <<>>, TrUserData). + + +encode_msg_any_value(#{} = M, Bin, TrUserData) -> + case M of + #{value := F1} -> + case id(F1, TrUserData) of + {string_value, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_type_string(TrTF1, <>, TrUserData) end; + {bool_value, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_type_bool(TrTF1, <>, TrUserData) end; + {int_value, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_type_int64(TrTF1, <>, TrUserData) end; + {double_value, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_type_double(TrTF1, <>, TrUserData) end; + {array_value, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_any_value_array_value(TrTF1, <>, TrUserData) end; + {kvlist_value, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_any_value_kvlist_value(TrTF1, <>, TrUserData) end; + {bytes_value, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_type_bytes(TrTF1, <>, TrUserData) end + end; + _ -> Bin + end. + +encode_msg_array_value(Msg, TrUserData) -> encode_msg_array_value(Msg, <<>>, TrUserData). + + +encode_msg_array_value(#{} = M, Bin, TrUserData) -> + case M of + #{values := F1} -> + TrF1 = id(F1, TrUserData), + if TrF1 == [] -> Bin; + true -> e_field_array_value_values(TrF1, Bin, TrUserData) + end; + _ -> Bin + end. + +encode_msg_key_value_list(Msg, TrUserData) -> encode_msg_key_value_list(Msg, <<>>, TrUserData). + + +encode_msg_key_value_list(#{} = M, Bin, TrUserData) -> + case M of + #{values := F1} -> + TrF1 = id(F1, TrUserData), + if TrF1 == [] -> Bin; + true -> e_field_key_value_list_values(TrF1, Bin, TrUserData) + end; + _ -> Bin + end. + +encode_msg_key_value(Msg, TrUserData) -> encode_msg_key_value(Msg, <<>>, TrUserData). + + +encode_msg_key_value(#{} = M, Bin, TrUserData) -> + B1 = case M of + #{key := F1} -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end; + _ -> Bin + end, + case M of + #{value := F2} -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= undefined -> B1; + true -> e_mfield_key_value_value(TrF2, <>, TrUserData) + end + end; + _ -> B1 + end. + +encode_msg_instrumentation_scope(Msg, TrUserData) -> encode_msg_instrumentation_scope(Msg, <<>>, TrUserData). + + +encode_msg_instrumentation_scope(#{} = M, Bin, TrUserData) -> + B1 = case M of + #{name := F1} -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end; + _ -> Bin + end, + B2 = case M of + #{version := F2} -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end; + _ -> B1 + end, + B3 = case M of + #{attributes := F3} -> + TrF3 = id(F3, TrUserData), + if TrF3 == [] -> B2; + true -> e_field_instrumentation_scope_attributes(TrF3, B2, TrUserData) + end; + _ -> B2 + end, + case M of + #{dropped_attributes_count := F4} -> + begin + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) + end + end; + _ -> B3 + end. + +encode_msg_resource(Msg, TrUserData) -> encode_msg_resource(Msg, <<>>, TrUserData). + + +encode_msg_resource(#{} = M, Bin, TrUserData) -> + B1 = case M of + #{attributes := F1} -> + TrF1 = id(F1, TrUserData), + if TrF1 == [] -> Bin; + true -> e_field_resource_attributes(TrF1, Bin, TrUserData) + end; + _ -> Bin + end, + case M of + #{dropped_attributes_count := F2} -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_varint(TrF2, <>, TrUserData) + end + end; + _ -> B1 + end. + +e_mfield_export_logs_service_request_resource_logs(Msg, Bin, TrUserData) -> + SubBin = encode_msg_resource_logs(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_export_logs_service_request_resource_logs([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_export_logs_service_request_resource_logs(id(Elem, TrUserData), Bin2, TrUserData), + e_field_export_logs_service_request_resource_logs(Rest, Bin3, TrUserData); +e_field_export_logs_service_request_resource_logs([], Bin, _TrUserData) -> Bin. + +e_mfield_export_logs_service_response_partial_success(Msg, Bin, TrUserData) -> + SubBin = encode_msg_export_logs_partial_success(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_logs_data_resource_logs(Msg, Bin, TrUserData) -> + SubBin = encode_msg_resource_logs(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_logs_data_resource_logs([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_logs_data_resource_logs(id(Elem, TrUserData), Bin2, TrUserData), + e_field_logs_data_resource_logs(Rest, Bin3, TrUserData); +e_field_logs_data_resource_logs([], Bin, _TrUserData) -> Bin. + +e_mfield_resource_logs_resource(Msg, Bin, TrUserData) -> + SubBin = encode_msg_resource(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_resource_logs_scope_logs(Msg, Bin, TrUserData) -> + SubBin = encode_msg_scope_logs(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_resource_logs_scope_logs([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_resource_logs_scope_logs(id(Elem, TrUserData), Bin2, TrUserData), + e_field_resource_logs_scope_logs(Rest, Bin3, TrUserData); +e_field_resource_logs_scope_logs([], Bin, _TrUserData) -> Bin. + +e_mfield_scope_logs_scope(Msg, Bin, TrUserData) -> + SubBin = encode_msg_instrumentation_scope(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_scope_logs_log_records(Msg, Bin, TrUserData) -> + SubBin = encode_msg_log_record(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_scope_logs_log_records([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_scope_logs_log_records(id(Elem, TrUserData), Bin2, TrUserData), + e_field_scope_logs_log_records(Rest, Bin3, TrUserData); +e_field_scope_logs_log_records([], Bin, _TrUserData) -> Bin. + +e_mfield_log_record_body(Msg, Bin, TrUserData) -> + SubBin = encode_msg_any_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_log_record_attributes(Msg, Bin, TrUserData) -> + SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_log_record_attributes([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_log_record_attributes(id(Elem, TrUserData), Bin2, TrUserData), + e_field_log_record_attributes(Rest, Bin3, TrUserData); +e_field_log_record_attributes([], Bin, _TrUserData) -> Bin. + +e_mfield_any_value_array_value(Msg, Bin, TrUserData) -> + SubBin = encode_msg_array_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_any_value_kvlist_value(Msg, Bin, TrUserData) -> + SubBin = encode_msg_key_value_list(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_array_value_values(Msg, Bin, TrUserData) -> + SubBin = encode_msg_any_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_array_value_values([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_array_value_values(id(Elem, TrUserData), Bin2, TrUserData), + e_field_array_value_values(Rest, Bin3, TrUserData); +e_field_array_value_values([], Bin, _TrUserData) -> Bin. + +e_mfield_key_value_list_values(Msg, Bin, TrUserData) -> + SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_key_value_list_values([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_key_value_list_values(id(Elem, TrUserData), Bin2, TrUserData), + e_field_key_value_list_values(Rest, Bin3, TrUserData); +e_field_key_value_list_values([], Bin, _TrUserData) -> Bin. + +e_mfield_key_value_value(Msg, Bin, TrUserData) -> + SubBin = encode_msg_any_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_instrumentation_scope_attributes(Msg, Bin, TrUserData) -> + SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_instrumentation_scope_attributes([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_instrumentation_scope_attributes(id(Elem, TrUserData), Bin2, TrUserData), + e_field_instrumentation_scope_attributes(Rest, Bin3, TrUserData); +e_field_instrumentation_scope_attributes([], Bin, _TrUserData) -> Bin. + +e_mfield_resource_attributes(Msg, Bin, TrUserData) -> + SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_resource_attributes([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_resource_attributes(id(Elem, TrUserData), Bin2, TrUserData), + e_field_resource_attributes(Rest, Bin3, TrUserData); +e_field_resource_attributes([], Bin, _TrUserData) -> Bin. + +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_UNSPECIFIED', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE2', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE3', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE4', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG2', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG3', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG4', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO2', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO3', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO4', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN2', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN3', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN4', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR2', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR3', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR4', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL2', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL3', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL4', Bin, _TrUserData) -> <>; +'e_enum_opentelemetry.proto.logs.v1.SeverityNumber'(V, Bin, _TrUserData) -> e_varint(V, Bin). + +-compile({nowarn_unused_function,e_type_sint/3}). +e_type_sint(Value, Bin, _TrUserData) when Value >= 0 -> e_varint(Value * 2, Bin); +e_type_sint(Value, Bin, _TrUserData) -> e_varint(Value * -2 - 1, Bin). + +-compile({nowarn_unused_function,e_type_int32/3}). +e_type_int32(Value, Bin, _TrUserData) when 0 =< Value, Value =< 127 -> <>; +e_type_int32(Value, Bin, _TrUserData) -> + <> = <>, + e_varint(N, Bin). + +-compile({nowarn_unused_function,e_type_int64/3}). +e_type_int64(Value, Bin, _TrUserData) when 0 =< Value, Value =< 127 -> <>; +e_type_int64(Value, Bin, _TrUserData) -> + <> = <>, + e_varint(N, Bin). + +-compile({nowarn_unused_function,e_type_bool/3}). +e_type_bool(true, Bin, _TrUserData) -> <>; +e_type_bool(false, Bin, _TrUserData) -> <>; +e_type_bool(1, Bin, _TrUserData) -> <>; +e_type_bool(0, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_string/3}). +e_type_string(S, Bin, _TrUserData) -> + Utf8 = unicode:characters_to_binary(S), + Bin2 = e_varint(byte_size(Utf8), Bin), + <>. + +-compile({nowarn_unused_function,e_type_bytes/3}). +e_type_bytes(Bytes, Bin, _TrUserData) when is_binary(Bytes) -> + Bin2 = e_varint(byte_size(Bytes), Bin), + <>; +e_type_bytes(Bytes, Bin, _TrUserData) when is_list(Bytes) -> + BytesBin = iolist_to_binary(Bytes), + Bin2 = e_varint(byte_size(BytesBin), Bin), + <>. + +-compile({nowarn_unused_function,e_type_fixed32/3}). +e_type_fixed32(Value, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_sfixed32/3}). +e_type_sfixed32(Value, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_fixed64/3}). +e_type_fixed64(Value, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_sfixed64/3}). +e_type_sfixed64(Value, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_float/3}). +e_type_float(V, Bin, _) when is_number(V) -> <>; +e_type_float(infinity, Bin, _) -> <>; +e_type_float('-infinity', Bin, _) -> <>; +e_type_float(nan, Bin, _) -> <>. + +-compile({nowarn_unused_function,e_type_double/3}). +e_type_double(V, Bin, _) when is_number(V) -> <>; +e_type_double(infinity, Bin, _) -> <>; +e_type_double('-infinity', Bin, _) -> <>; +e_type_double(nan, Bin, _) -> <>. + +-compile({nowarn_unused_function,e_unknown_elems/2}). +e_unknown_elems([Elem | Rest], Bin) -> + BinR = case Elem of + {varint, FNum, N} -> + BinF = e_varint(FNum bsl 3, Bin), + e_varint(N, BinF); + {length_delimited, FNum, Data} -> + BinF = e_varint(FNum bsl 3 bor 2, Bin), + BinL = e_varint(byte_size(Data), BinF), + <>; + {group, FNum, GroupFields} -> + Bin1 = e_varint(FNum bsl 3 bor 3, Bin), + Bin2 = e_unknown_elems(GroupFields, Bin1), + e_varint(FNum bsl 3 bor 4, Bin2); + {fixed32, FNum, V} -> + BinF = e_varint(FNum bsl 3 bor 5, Bin), + <>; + {fixed64, FNum, V} -> + BinF = e_varint(FNum bsl 3 bor 1, Bin), + <> + end, + e_unknown_elems(Rest, BinR); +e_unknown_elems([], Bin) -> Bin. + +-compile({nowarn_unused_function,e_varint/3}). +e_varint(N, Bin, _TrUserData) -> e_varint(N, Bin). + +-compile({nowarn_unused_function,e_varint/2}). +e_varint(N, Bin) when N =< 127 -> <>; +e_varint(N, Bin) -> + Bin2 = <>, + e_varint(N bsr 7, Bin2). + +is_empty_string("") -> true; +is_empty_string(<<>>) -> true; +is_empty_string(L) when is_list(L) -> not string_has_chars(L); +is_empty_string(B) when is_binary(B) -> false. + +string_has_chars([C | _]) when is_integer(C) -> true; +string_has_chars([H | T]) -> + case string_has_chars(H) of + true -> true; + false -> string_has_chars(T) + end; +string_has_chars(B) when is_binary(B), byte_size(B) =/= 0 -> true; +string_has_chars(C) when is_integer(C) -> true; +string_has_chars(<<>>) -> false; +string_has_chars([]) -> false. + + +decode_msg(Bin, MsgName) when is_binary(Bin) -> decode_msg(Bin, MsgName, []). + +decode_msg(Bin, MsgName, Opts) when is_binary(Bin) -> + TrUserData = proplists:get_value(user_data, Opts), + decode_msg_1_catch(Bin, MsgName, TrUserData). + +-ifdef('OTP_RELEASE'). +decode_msg_1_catch(Bin, MsgName, TrUserData) -> + try decode_msg_2_doit(MsgName, Bin, TrUserData) + catch + error:{gpb_error,_}=Reason:StackTrace -> + erlang:raise(error, Reason, StackTrace); + Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + end. +-else. +decode_msg_1_catch(Bin, MsgName, TrUserData) -> + try decode_msg_2_doit(MsgName, Bin, TrUserData) + catch + error:{gpb_error,_}=Reason -> + erlang:raise(error, Reason, + erlang:get_stacktrace()); + Class:Reason -> + StackTrace = erlang:get_stacktrace(), + error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + end. +-endif. + +decode_msg_2_doit(export_logs_service_request, Bin, TrUserData) -> id(decode_msg_export_logs_service_request(Bin, TrUserData), TrUserData); +decode_msg_2_doit(export_logs_service_response, Bin, TrUserData) -> id(decode_msg_export_logs_service_response(Bin, TrUserData), TrUserData); +decode_msg_2_doit(export_logs_partial_success, Bin, TrUserData) -> id(decode_msg_export_logs_partial_success(Bin, TrUserData), TrUserData); +decode_msg_2_doit(logs_data, Bin, TrUserData) -> id(decode_msg_logs_data(Bin, TrUserData), TrUserData); +decode_msg_2_doit(resource_logs, Bin, TrUserData) -> id(decode_msg_resource_logs(Bin, TrUserData), TrUserData); +decode_msg_2_doit(scope_logs, Bin, TrUserData) -> id(decode_msg_scope_logs(Bin, TrUserData), TrUserData); +decode_msg_2_doit(log_record, Bin, TrUserData) -> id(decode_msg_log_record(Bin, TrUserData), TrUserData); +decode_msg_2_doit(any_value, Bin, TrUserData) -> id(decode_msg_any_value(Bin, TrUserData), TrUserData); +decode_msg_2_doit(array_value, Bin, TrUserData) -> id(decode_msg_array_value(Bin, TrUserData), TrUserData); +decode_msg_2_doit(key_value_list, Bin, TrUserData) -> id(decode_msg_key_value_list(Bin, TrUserData), TrUserData); +decode_msg_2_doit(key_value, Bin, TrUserData) -> id(decode_msg_key_value(Bin, TrUserData), TrUserData); +decode_msg_2_doit(instrumentation_scope, Bin, TrUserData) -> id(decode_msg_instrumentation_scope(Bin, TrUserData), TrUserData); +decode_msg_2_doit(resource, Bin, TrUserData) -> id(decode_msg_resource(Bin, TrUserData), TrUserData). + + + +decode_msg_export_logs_service_request(Bin, TrUserData) -> dfp_read_field_def_export_logs_service_request(Bin, 0, 0, 0, id([], TrUserData), TrUserData). + +dfp_read_field_def_export_logs_service_request(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_export_logs_service_request_resource_logs(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_export_logs_service_request(<<>>, 0, 0, _, R1, TrUserData) -> + S1 = #{}, + if R1 == '$undef' -> S1; + true -> S1#{resource_logs => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_export_logs_service_request(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_export_logs_service_request(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_export_logs_service_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_logs_service_request(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_export_logs_service_request(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_export_logs_service_request_resource_logs(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_export_logs_service_request(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_export_logs_service_request(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_export_logs_service_request(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_export_logs_service_request(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_export_logs_service_request(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_export_logs_service_request(<<>>, 0, 0, _, R1, TrUserData) -> + S1 = #{}, + if R1 == '$undef' -> S1; + true -> S1#{resource_logs => lists_reverse(R1, TrUserData)} + end. + +d_field_export_logs_service_request_resource_logs(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_export_logs_service_request_resource_logs(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_export_logs_service_request_resource_logs(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_resource_logs(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_export_logs_service_request(RestF, 0, 0, F, cons(NewFValue, Prev, TrUserData), TrUserData). + +skip_varint_export_logs_service_request(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_export_logs_service_request(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_export_logs_service_request(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_logs_service_request(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_export_logs_service_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_export_logs_service_request(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_export_logs_service_request(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_export_logs_service_request(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_export_logs_service_request(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_export_logs_service_request(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_export_logs_service_request(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_logs_service_request(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_export_logs_service_request(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_logs_service_request(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_export_logs_service_response(Bin, TrUserData) -> dfp_read_field_def_export_logs_service_response(Bin, 0, 0, 0, id('$undef', TrUserData), TrUserData). + +dfp_read_field_def_export_logs_service_response(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_export_logs_service_response_partial_success(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_export_logs_service_response(<<>>, 0, 0, _, F@_1, _) -> + S1 = #{}, + if F@_1 == '$undef' -> S1; + true -> S1#{partial_success => F@_1} + end; +dfp_read_field_def_export_logs_service_response(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_export_logs_service_response(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_export_logs_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_logs_service_response(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_export_logs_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_export_logs_service_response_partial_success(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_export_logs_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_export_logs_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_export_logs_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_export_logs_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_export_logs_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_export_logs_service_response(<<>>, 0, 0, _, F@_1, _) -> + S1 = #{}, + if F@_1 == '$undef' -> S1; + true -> S1#{partial_success => F@_1} + end. + +d_field_export_logs_service_response_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_export_logs_service_response_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_export_logs_service_response_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_export_logs_partial_success(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_export_logs_service_response(RestF, + 0, + 0, + F, + if Prev == '$undef' -> NewFValue; + true -> merge_msg_export_logs_partial_success(Prev, NewFValue, TrUserData) + end, + TrUserData). + +skip_varint_export_logs_service_response(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_export_logs_service_response(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_export_logs_service_response(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_logs_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_export_logs_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_export_logs_service_response(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_export_logs_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_export_logs_service_response(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_export_logs_service_response(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_export_logs_service_response(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_export_logs_service_response(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_logs_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_export_logs_service_response(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_logs_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_export_logs_partial_success(Bin, TrUserData) -> dfp_read_field_def_export_logs_partial_success(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_export_logs_partial_success(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_export_logs_partial_success_rejected_log_records(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_export_logs_partial_success(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_export_logs_partial_success_error_message(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_export_logs_partial_success(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{rejected_log_records => F@_1, error_message => F@_2}; +dfp_read_field_def_export_logs_partial_success(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_export_logs_partial_success(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_export_logs_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_logs_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_export_logs_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> d_field_export_logs_partial_success_rejected_log_records(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_export_logs_partial_success_error_message(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_export_logs_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_export_logs_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_export_logs_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_export_logs_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_export_logs_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_export_logs_partial_success(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{rejected_log_records => F@_1, error_message => F@_2}. + +d_field_export_logs_partial_success_rejected_log_records(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_export_logs_partial_success_rejected_log_records(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_export_logs_partial_success_rejected_log_records(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = {begin <> = <<(X bsl N + Acc):64/unsigned-native>>, id(Res, TrUserData) end, Rest}, + dfp_read_field_def_export_logs_partial_success(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_export_logs_partial_success_error_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_export_logs_partial_success_error_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_export_logs_partial_success_error_message(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_export_logs_partial_success(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_export_logs_partial_success(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_export_logs_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_export_logs_partial_success(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_logs_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_export_logs_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_export_logs_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_export_logs_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_export_logs_partial_success(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_export_logs_partial_success(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_export_logs_partial_success(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_export_logs_partial_success(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_logs_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_export_logs_partial_success(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_logs_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +decode_msg_logs_data(Bin, TrUserData) -> dfp_read_field_def_logs_data(Bin, 0, 0, 0, id([], TrUserData), TrUserData). + +dfp_read_field_def_logs_data(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_logs_data_resource_logs(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_logs_data(<<>>, 0, 0, _, R1, TrUserData) -> + S1 = #{}, + if R1 == '$undef' -> S1; + true -> S1#{resource_logs => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_logs_data(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_logs_data(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_logs_data(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_logs_data(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_logs_data(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_logs_data_resource_logs(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_logs_data(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_logs_data(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_logs_data(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_logs_data(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_logs_data(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_logs_data(<<>>, 0, 0, _, R1, TrUserData) -> + S1 = #{}, + if R1 == '$undef' -> S1; + true -> S1#{resource_logs => lists_reverse(R1, TrUserData)} + end. + +d_field_logs_data_resource_logs(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_logs_data_resource_logs(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_logs_data_resource_logs(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_resource_logs(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_logs_data(RestF, 0, 0, F, cons(NewFValue, Prev, TrUserData), TrUserData). + +skip_varint_logs_data(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_logs_data(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_logs_data(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_logs_data(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_logs_data(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_logs_data(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_logs_data(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_logs_data(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_logs_data(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_logs_data(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_logs_data(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_logs_data(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_logs_data(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_logs_data(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_resource_logs(Bin, TrUserData) -> dfp_read_field_def_resource_logs(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_resource_logs(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_logs_resource(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_logs(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_logs_scope_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_logs(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_logs_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_logs(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> + S1 = #{schema_url => F@_3}, + S2 = if F@_1 == '$undef' -> S1; + true -> S1#{resource => F@_1} + end, + if R1 == '$undef' -> S2; + true -> S2#{scope_logs => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_resource_logs(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_resource_logs(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_resource_logs(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_resource_logs(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_resource_logs(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_resource_logs_resource(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_resource_logs_scope_logs(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_resource_logs_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_resource_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_resource_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_resource_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_resource_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_resource_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_resource_logs(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> + S1 = #{schema_url => F@_3}, + S2 = if F@_1 == '$undef' -> S1; + true -> S1#{resource => F@_1} + end, + if R1 == '$undef' -> S2; + true -> S2#{scope_logs => lists_reverse(R1, TrUserData)} + end. + +d_field_resource_logs_resource(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_logs_resource(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_logs_resource(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_resource(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_resource_logs(RestF, + 0, + 0, + F, + if Prev == '$undef' -> NewFValue; + true -> merge_msg_resource(Prev, NewFValue, TrUserData) + end, + F@_2, + F@_3, + TrUserData). + +d_field_resource_logs_scope_logs(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_logs_scope_logs(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_logs_scope_logs(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_scope_logs(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_resource_logs(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData). + +d_field_resource_logs_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_logs_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_logs_schema_url(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_resource_logs(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_resource_logs(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_resource_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_resource_logs(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_resource_logs(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_resource_logs(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_resource_logs(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_resource_logs(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_resource_logs(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_resource_logs(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_resource_logs(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_resource_logs(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_scope_logs(Bin, TrUserData) -> dfp_read_field_def_scope_logs(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_scope_logs(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_scope_logs_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_scope_logs(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_scope_logs_log_records(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_scope_logs(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_scope_logs_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_scope_logs(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> + S1 = #{schema_url => F@_3}, + S2 = if F@_1 == '$undef' -> S1; + true -> S1#{scope => F@_1} + end, + if R1 == '$undef' -> S2; + true -> S2#{log_records => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_scope_logs(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_scope_logs(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_scope_logs(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_scope_logs(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_scope_logs(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_scope_logs_scope(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_scope_logs_log_records(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_scope_logs_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_scope_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_scope_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_scope_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_scope_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_scope_logs(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_scope_logs(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> + S1 = #{schema_url => F@_3}, + S2 = if F@_1 == '$undef' -> S1; + true -> S1#{scope => F@_1} + end, + if R1 == '$undef' -> S2; + true -> S2#{log_records => lists_reverse(R1, TrUserData)} + end. + +d_field_scope_logs_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_scope_logs_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_scope_logs_scope(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_instrumentation_scope(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_scope_logs(RestF, + 0, + 0, + F, + if Prev == '$undef' -> NewFValue; + true -> merge_msg_instrumentation_scope(Prev, NewFValue, TrUserData) + end, + F@_2, + F@_3, + TrUserData). + +d_field_scope_logs_log_records(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_scope_logs_log_records(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_scope_logs_log_records(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_log_record(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_scope_logs(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData). + +d_field_scope_logs_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_scope_logs_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_scope_logs_schema_url(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_scope_logs(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_scope_logs(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_scope_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_scope_logs(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_scope_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_scope_logs(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_scope_logs(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_scope_logs(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_scope_logs(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_scope_logs(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_scope_logs(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_scope_logs(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_scope_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_scope_logs(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_scope_logs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_log_record(Bin, TrUserData) -> + dfp_read_field_def_log_record(Bin, + 0, + 0, + 0, + id(0, TrUserData), + id(0, TrUserData), + id('SEVERITY_NUMBER_UNSPECIFIED', TrUserData), + id(<<>>, TrUserData), + id('$undef', TrUserData), + id([], TrUserData), + id(0, TrUserData), + id(0, TrUserData), + id(<<>>, TrUserData), + id(<<>>, TrUserData), + TrUserData). + +dfp_read_field_def_log_record(<<9, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_time_unix_nano(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<89, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_observed_time_unix_nano(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_severity_number(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_severity_text(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<42, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_body(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<50, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_attributes(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<56, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_dropped_attributes_count(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<69, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_flags(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<74, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_trace_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<82, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + d_field_log_record_span_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dfp_read_field_def_log_record(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, R1, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + S1 = #{time_unix_nano => F@_1, observed_time_unix_nano => F@_2, severity_number => F@_3, severity_text => F@_4, dropped_attributes_count => F@_7, flags => F@_8, trace_id => F@_9, span_id => F@_10}, + S2 = if F@_5 == '$undef' -> S1; + true -> S1#{body => F@_5} + end, + if R1 == '$undef' -> S2; + true -> S2#{attributes => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_log_record(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> dg_read_field_def_log_record(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +dg_read_field_def_log_record(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 32 - 7 -> + dg_read_field_def_log_record(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +dg_read_field_def_log_record(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 9 -> d_field_log_record_time_unix_nano(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 89 -> d_field_log_record_observed_time_unix_nano(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 16 -> d_field_log_record_severity_number(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 26 -> d_field_log_record_severity_text(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 42 -> d_field_log_record_body(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 50 -> d_field_log_record_attributes(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 56 -> d_field_log_record_dropped_attributes_count(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 69 -> d_field_log_record_flags(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 74 -> d_field_log_record_trace_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 82 -> d_field_log_record_span_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_log_record(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 1 -> skip_64_log_record(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 2 -> skip_length_delimited_log_record(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 3 -> skip_group_log_record(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); + 5 -> skip_32_log_record(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) + end + end; +dg_read_field_def_log_record(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, R1, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + S1 = #{time_unix_nano => F@_1, observed_time_unix_nano => F@_2, severity_number => F@_3, severity_text => F@_4, dropped_attributes_count => F@_7, flags => F@_8, trace_id => F@_9, span_id => F@_10}, + S2 = if F@_5 == '$undef' -> S1; + true -> S1#{body => F@_5} + end, + if R1 == '$undef' -> S2; + true -> S2#{attributes => lists_reverse(R1, TrUserData)} + end. + +d_field_log_record_time_unix_nano(<>, Z1, Z2, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + dfp_read_field_def_log_record(Rest, Z1, Z2, F, id(Value, TrUserData), F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +d_field_log_record_observed_time_unix_nano(<>, Z1, Z2, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + dfp_read_field_def_log_record(Rest, Z1, Z2, F, F@_1, id(Value, TrUserData), F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +d_field_log_record_severity_number(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 57 -> + d_field_log_record_severity_number(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +d_field_log_record_severity_number(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + {NewFValue, RestF} = {id('d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(begin <> = <<(X bsl N + Acc):32/unsigned-native>>, id(Res, TrUserData) end), TrUserData), Rest}, + dfp_read_field_def_log_record(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +d_field_log_record_severity_text(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 57 -> + d_field_log_record_severity_text(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +d_field_log_record_severity_text(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_log_record(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +d_field_log_record_body(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 57 -> + d_field_log_record_body(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +d_field_log_record_body(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, Prev, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_any_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_log_record(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, + F@_4, + if Prev == '$undef' -> NewFValue; + true -> merge_msg_any_value(Prev, NewFValue, TrUserData) + end, + F@_6, + F@_7, + F@_8, + F@_9, + F@_10, + TrUserData). + +d_field_log_record_attributes(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 57 -> + d_field_log_record_attributes(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +d_field_log_record_attributes(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, Prev, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_key_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_log_record(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, cons(NewFValue, Prev, TrUserData), F@_7, F@_8, F@_9, F@_10, TrUserData). + +d_field_log_record_dropped_attributes_count(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 57 -> + d_field_log_record_dropped_attributes_count(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +d_field_log_record_dropped_attributes_count(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _, F@_8, F@_9, F@_10, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_log_record(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, F@_8, F@_9, F@_10, TrUserData). + +d_field_log_record_flags(<>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _, F@_9, F@_10, TrUserData) -> + dfp_read_field_def_log_record(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, id(Value, TrUserData), F@_9, F@_10, TrUserData). + +d_field_log_record_trace_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 57 -> + d_field_log_record_trace_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +d_field_log_record_trace_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _, F@_10, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_log_record(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, NewFValue, F@_10, TrUserData). + +d_field_log_record_span_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 57 -> + d_field_log_record_span_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +d_field_log_record_span_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_log_record(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, NewFValue, TrUserData). + +skip_varint_log_record(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> skip_varint_log_record(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +skip_varint_log_record(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + dfp_read_field_def_log_record(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +skip_length_delimited_log_record(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) when N < 57 -> + skip_length_delimited_log_record(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData); +skip_length_delimited_log_record(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_log_record(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +skip_group_log_record(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_log_record(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +skip_32_log_record(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> dfp_read_field_def_log_record(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +skip_64_log_record(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData) -> dfp_read_field_def_log_record(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData). + +decode_msg_any_value(Bin, TrUserData) -> dfp_read_field_def_any_value(Bin, 0, 0, 0, id('$undef', TrUserData), TrUserData). + +dfp_read_field_def_any_value(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_any_value_string_value(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_any_value(<<16, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_any_value_bool_value(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_any_value(<<24, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_any_value_int_value(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_any_value(<<33, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_any_value_double_value(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_any_value(<<42, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_any_value_array_value(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_any_value(<<50, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_any_value_kvlist_value(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_any_value(<<58, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_any_value_bytes_value(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_any_value(<<>>, 0, 0, _, F@_1, _) -> + S1 = #{}, + if F@_1 == '$undef' -> S1; + true -> S1#{value => F@_1} + end; +dfp_read_field_def_any_value(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_any_value(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_any_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_any_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_any_value(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_any_value_string_value(Rest, 0, 0, 0, F@_1, TrUserData); + 16 -> d_field_any_value_bool_value(Rest, 0, 0, 0, F@_1, TrUserData); + 24 -> d_field_any_value_int_value(Rest, 0, 0, 0, F@_1, TrUserData); + 33 -> d_field_any_value_double_value(Rest, 0, 0, 0, F@_1, TrUserData); + 42 -> d_field_any_value_array_value(Rest, 0, 0, 0, F@_1, TrUserData); + 50 -> d_field_any_value_kvlist_value(Rest, 0, 0, 0, F@_1, TrUserData); + 58 -> d_field_any_value_bytes_value(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_any_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_any_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_any_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_any_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_any_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_any_value(<<>>, 0, 0, _, F@_1, _) -> + S1 = #{}, + if F@_1 == '$undef' -> S1; + true -> S1#{value => F@_1} + end. + +d_field_any_value_string_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_any_value_string_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_any_value_string_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_any_value(RestF, 0, 0, F, id({string_value, NewFValue}, TrUserData), TrUserData). + +d_field_any_value_bool_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_any_value_bool_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_any_value_bool_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> + {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, + dfp_read_field_def_any_value(RestF, 0, 0, F, id({bool_value, NewFValue}, TrUserData), TrUserData). + +d_field_any_value_int_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_any_value_int_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_any_value_int_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> + {NewFValue, RestF} = {begin <> = <<(X bsl N + Acc):64/unsigned-native>>, id(Res, TrUserData) end, Rest}, + dfp_read_field_def_any_value(RestF, 0, 0, F, id({int_value, NewFValue}, TrUserData), TrUserData). + +d_field_any_value_double_value(<<0:48, 240, 127, Rest/binary>>, Z1, Z2, F, _, TrUserData) -> dfp_read_field_def_any_value(Rest, Z1, Z2, F, id({double_value, id(infinity, TrUserData)}, TrUserData), TrUserData); +d_field_any_value_double_value(<<0:48, 240, 255, Rest/binary>>, Z1, Z2, F, _, TrUserData) -> dfp_read_field_def_any_value(Rest, Z1, Z2, F, id({double_value, id('-infinity', TrUserData)}, TrUserData), TrUserData); +d_field_any_value_double_value(<<_:48, 15:4, _:4, _:1, 127:7, Rest/binary>>, Z1, Z2, F, _, TrUserData) -> dfp_read_field_def_any_value(Rest, Z1, Z2, F, id({double_value, id(nan, TrUserData)}, TrUserData), TrUserData); +d_field_any_value_double_value(<>, Z1, Z2, F, _, TrUserData) -> dfp_read_field_def_any_value(Rest, Z1, Z2, F, id({double_value, id(Value, TrUserData)}, TrUserData), TrUserData). + +d_field_any_value_array_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_any_value_array_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_any_value_array_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_array_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_any_value(RestF, + 0, + 0, + F, + case Prev of + '$undef' -> id({array_value, NewFValue}, TrUserData); + {array_value, MVPrev} -> id({array_value, merge_msg_array_value(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({array_value, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_any_value_kvlist_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_any_value_kvlist_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_any_value_kvlist_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_key_value_list(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_any_value(RestF, + 0, + 0, + F, + case Prev of + '$undef' -> id({kvlist_value, NewFValue}, TrUserData); + {kvlist_value, MVPrev} -> id({kvlist_value, merge_msg_key_value_list(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({kvlist_value, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_any_value_bytes_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_any_value_bytes_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_any_value_bytes_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_any_value(RestF, 0, 0, F, id({bytes_value, NewFValue}, TrUserData), TrUserData). + +skip_varint_any_value(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_any_value(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_any_value(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_any_value(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_any_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_any_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_any_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_any_value(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_any_value(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_any_value(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_any_value(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_any_value(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_any_value(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_any_value(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_array_value(Bin, TrUserData) -> dfp_read_field_def_array_value(Bin, 0, 0, 0, id([], TrUserData), TrUserData). + +dfp_read_field_def_array_value(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_array_value_values(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_array_value(<<>>, 0, 0, _, R1, TrUserData) -> + S1 = #{}, + if R1 == '$undef' -> S1; + true -> S1#{values => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_array_value(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_array_value(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_array_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_array_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_array_value(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_array_value_values(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_array_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_array_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_array_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_array_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_array_value(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_array_value(<<>>, 0, 0, _, R1, TrUserData) -> + S1 = #{}, + if R1 == '$undef' -> S1; + true -> S1#{values => lists_reverse(R1, TrUserData)} + end. + +d_field_array_value_values(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_array_value_values(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_array_value_values(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_any_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_array_value(RestF, 0, 0, F, cons(NewFValue, Prev, TrUserData), TrUserData). + +skip_varint_array_value(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_array_value(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_array_value(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_array_value(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_array_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_array_value(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_array_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_array_value(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_array_value(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_array_value(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_array_value(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_array_value(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_array_value(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_array_value(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_key_value_list(Bin, TrUserData) -> dfp_read_field_def_key_value_list(Bin, 0, 0, 0, id([], TrUserData), TrUserData). + +dfp_read_field_def_key_value_list(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_key_value_list_values(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_key_value_list(<<>>, 0, 0, _, R1, TrUserData) -> + S1 = #{}, + if R1 == '$undef' -> S1; + true -> S1#{values => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_key_value_list(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_key_value_list(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_key_value_list(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_key_value_list(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_key_value_list(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_key_value_list_values(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_key_value_list(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_key_value_list(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_key_value_list(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_key_value_list(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_key_value_list(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_key_value_list(<<>>, 0, 0, _, R1, TrUserData) -> + S1 = #{}, + if R1 == '$undef' -> S1; + true -> S1#{values => lists_reverse(R1, TrUserData)} + end. + +d_field_key_value_list_values(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_key_value_list_values(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_key_value_list_values(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_key_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_key_value_list(RestF, 0, 0, F, cons(NewFValue, Prev, TrUserData), TrUserData). + +skip_varint_key_value_list(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_key_value_list(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_key_value_list(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_key_value_list(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_key_value_list(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_key_value_list(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_key_value_list(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_key_value_list(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_key_value_list(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_key_value_list(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_key_value_list(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_key_value_list(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_key_value_list(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_key_value_list(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_key_value(Bin, TrUserData) -> dfp_read_field_def_key_value(Bin, 0, 0, 0, id(<<>>, TrUserData), id('$undef', TrUserData), TrUserData). + +dfp_read_field_def_key_value(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_key_value_key(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_key_value(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_key_value_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_key_value(<<>>, 0, 0, _, F@_1, F@_2, _) -> + S1 = #{key => F@_1}, + if F@_2 == '$undef' -> S1; + true -> S1#{value => F@_2} + end; +dfp_read_field_def_key_value(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_key_value(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_key_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_key_value(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_key_value(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_key_value_key(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_key_value_value(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_key_value(<<>>, 0, 0, _, F@_1, F@_2, _) -> + S1 = #{key => F@_1}, + if F@_2 == '$undef' -> S1; + true -> S1#{value => F@_2} + end. + +d_field_key_value_key(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_key_value_key(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_key_value_key(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_key_value(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_key_value_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_key_value_value(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_key_value_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_any_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_key_value(RestF, + 0, + 0, + F, + F@_1, + if Prev == '$undef' -> NewFValue; + true -> merge_msg_any_value(Prev, NewFValue, TrUserData) + end, + TrUserData). + +skip_varint_key_value(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_key_value(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_key_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_key_value(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_key_value(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_key_value(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_key_value(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_key_value(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_key_value(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_key_value(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +decode_msg_instrumentation_scope(Bin, TrUserData) -> dfp_read_field_def_instrumentation_scope(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id([], TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_instrumentation_scope(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_name(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_attributes(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_dropped_attributes_count(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, R1, F@_4, TrUserData) -> + S1 = #{name => F@_1, version => F@_2, dropped_attributes_count => F@_4}, + if R1 == '$undef' -> S1; + true -> S1#{attributes => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +dg_read_field_def_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_instrumentation_scope_name(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 18 -> d_field_instrumentation_scope_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 26 -> d_field_instrumentation_scope_attributes(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 32 -> d_field_instrumentation_scope_dropped_attributes_count(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +dg_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, R1, F@_4, TrUserData) -> + S1 = #{name => F@_1, version => F@_2, dropped_attributes_count => F@_4}, + if R1 == '$undef' -> S1; + true -> S1#{attributes => lists_reverse(R1, TrUserData)} + end. + +d_field_instrumentation_scope_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +d_field_instrumentation_scope_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +d_field_instrumentation_scope_attributes(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_attributes(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_attributes(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, F@_4, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_key_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, F@_2, cons(NewFValue, Prev, TrUserData), F@_4, TrUserData). + +d_field_instrumentation_scope_dropped_attributes_count(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> + d_field_instrumentation_scope_dropped_attributes_count(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_dropped_attributes_count(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +skip_varint_instrumentation_scope(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_instrumentation_scope(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_length_delimited_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_instrumentation_scope(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_group_instrumentation_scope(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_instrumentation_scope(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_32_instrumentation_scope(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_64_instrumentation_scope(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +decode_msg_resource(Bin, TrUserData) -> dfp_read_field_def_resource(Bin, 0, 0, 0, id([], TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_resource(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_resource_attributes(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_resource(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_resource_dropped_attributes_count(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_resource(<<>>, 0, 0, _, R1, F@_2, TrUserData) -> + S1 = #{dropped_attributes_count => F@_2}, + if R1 == '$undef' -> S1; + true -> S1#{attributes => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_resource(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_resource(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_resource(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_resource(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_resource(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_resource_attributes(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 16 -> d_field_resource_dropped_attributes_count(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_resource(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_resource(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_resource(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_resource(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_resource(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_resource(<<>>, 0, 0, _, R1, F@_2, TrUserData) -> + S1 = #{dropped_attributes_count => F@_2}, + if R1 == '$undef' -> S1; + true -> S1#{attributes => lists_reverse(R1, TrUserData)} + end. + +d_field_resource_attributes(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_resource_attributes(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_resource_attributes(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_key_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_resource(RestF, 0, 0, F, cons(NewFValue, Prev, TrUserData), F@_2, TrUserData). + +d_field_resource_dropped_attributes_count(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_resource_dropped_attributes_count(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_resource_dropped_attributes_count(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_resource(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_resource(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_resource(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_resource(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_resource(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_resource(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_resource(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_resource(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_resource(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_resource(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_resource(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_resource(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_resource(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_resource(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_resource(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(0) -> 'SEVERITY_NUMBER_UNSPECIFIED'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(1) -> 'SEVERITY_NUMBER_TRACE'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(2) -> 'SEVERITY_NUMBER_TRACE2'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(3) -> 'SEVERITY_NUMBER_TRACE3'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(4) -> 'SEVERITY_NUMBER_TRACE4'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(5) -> 'SEVERITY_NUMBER_DEBUG'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(6) -> 'SEVERITY_NUMBER_DEBUG2'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(7) -> 'SEVERITY_NUMBER_DEBUG3'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(8) -> 'SEVERITY_NUMBER_DEBUG4'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(9) -> 'SEVERITY_NUMBER_INFO'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(10) -> 'SEVERITY_NUMBER_INFO2'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(11) -> 'SEVERITY_NUMBER_INFO3'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(12) -> 'SEVERITY_NUMBER_INFO4'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(13) -> 'SEVERITY_NUMBER_WARN'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(14) -> 'SEVERITY_NUMBER_WARN2'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(15) -> 'SEVERITY_NUMBER_WARN3'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(16) -> 'SEVERITY_NUMBER_WARN4'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(17) -> 'SEVERITY_NUMBER_ERROR'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(18) -> 'SEVERITY_NUMBER_ERROR2'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(19) -> 'SEVERITY_NUMBER_ERROR3'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(20) -> 'SEVERITY_NUMBER_ERROR4'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(21) -> 'SEVERITY_NUMBER_FATAL'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(22) -> 'SEVERITY_NUMBER_FATAL2'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(23) -> 'SEVERITY_NUMBER_FATAL3'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(24) -> 'SEVERITY_NUMBER_FATAL4'; +'d_enum_opentelemetry.proto.logs.v1.SeverityNumber'(V) -> V. + +read_group(Bin, FieldNum) -> + {NumBytes, EndTagLen} = read_gr_b(Bin, 0, 0, 0, 0, FieldNum), + <> = Bin, + {Group, Rest}. + +%% Like skipping over fields, but record the total length, +%% Each field is <(FieldNum bsl 3) bor FieldType> ++ +%% Record the length because varints may be non-optimally encoded. +%% +%% Groups can be nested, but assume the same FieldNum cannot be nested +%% because group field numbers are shared with the rest of the fields +%% numbers. Thus we can search just for an group-end with the same +%% field number. +%% +%% (The only time the same group field number could occur would +%% be in a nested sub message, but then it would be inside a +%% length-delimited entry, which we skip-read by length.) +read_gr_b(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen, FieldNum) + when N < (32-7) -> + read_gr_b(Tl, N+7, X bsl N + Acc, NumBytes, TagLen+1, FieldNum); +read_gr_b(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen, + FieldNum) -> + Key = X bsl N + Acc, + TagLen1 = TagLen + 1, + case {Key bsr 3, Key band 7} of + {FieldNum, 4} -> % 4 = group_end + {NumBytes, TagLen1}; + {_, 0} -> % 0 = varint + read_gr_vi(Tl, 0, NumBytes + TagLen1, FieldNum); + {_, 1} -> % 1 = bits64 + <<_:64, Tl2/binary>> = Tl, + read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 8, 0, FieldNum); + {_, 2} -> % 2 = length_delimited + read_gr_ld(Tl, 0, 0, NumBytes + TagLen1, FieldNum); + {_, 3} -> % 3 = group_start + read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum); + {_, 4} -> % 4 = group_end + read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum); + {_, 5} -> % 5 = bits32 + <<_:32, Tl2/binary>> = Tl, + read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 4, 0, FieldNum) + end. + +read_gr_vi(<<1:1, _:7, Tl/binary>>, N, NumBytes, FieldNum) + when N < (64-7) -> + read_gr_vi(Tl, N+7, NumBytes+1, FieldNum); +read_gr_vi(<<0:1, _:7, Tl/binary>>, _, NumBytes, FieldNum) -> + read_gr_b(Tl, 0, 0, NumBytes+1, 0, FieldNum). + +read_gr_ld(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum) + when N < (64-7) -> + read_gr_ld(Tl, N+7, X bsl N + Acc, NumBytes+1, FieldNum); +read_gr_ld(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum) -> + Len = X bsl N + Acc, + NumBytes1 = NumBytes + 1, + <<_:Len/binary, Tl2/binary>> = Tl, + read_gr_b(Tl2, 0, 0, NumBytes1 + Len, 0, FieldNum). + +merge_msgs(Prev, New, MsgName) when is_atom(MsgName) -> merge_msgs(Prev, New, MsgName, []). + +merge_msgs(Prev, New, MsgName, Opts) -> + TrUserData = proplists:get_value(user_data, Opts), + case MsgName of + export_logs_service_request -> merge_msg_export_logs_service_request(Prev, New, TrUserData); + export_logs_service_response -> merge_msg_export_logs_service_response(Prev, New, TrUserData); + export_logs_partial_success -> merge_msg_export_logs_partial_success(Prev, New, TrUserData); + logs_data -> merge_msg_logs_data(Prev, New, TrUserData); + resource_logs -> merge_msg_resource_logs(Prev, New, TrUserData); + scope_logs -> merge_msg_scope_logs(Prev, New, TrUserData); + log_record -> merge_msg_log_record(Prev, New, TrUserData); + any_value -> merge_msg_any_value(Prev, New, TrUserData); + array_value -> merge_msg_array_value(Prev, New, TrUserData); + key_value_list -> merge_msg_key_value_list(Prev, New, TrUserData); + key_value -> merge_msg_key_value(Prev, New, TrUserData); + instrumentation_scope -> merge_msg_instrumentation_scope(Prev, New, TrUserData); + resource -> merge_msg_resource(Prev, New, TrUserData) + end. + +-compile({nowarn_unused_function,merge_msg_export_logs_service_request/3}). +merge_msg_export_logs_service_request(PMsg, NMsg, TrUserData) -> + S1 = #{}, + case {PMsg, NMsg} of + {#{resource_logs := PFresource_logs}, #{resource_logs := NFresource_logs}} -> S1#{resource_logs => 'erlang_++'(PFresource_logs, NFresource_logs, TrUserData)}; + {_, #{resource_logs := NFresource_logs}} -> S1#{resource_logs => NFresource_logs}; + {#{resource_logs := PFresource_logs}, _} -> S1#{resource_logs => PFresource_logs}; + {_, _} -> S1 + end. + +-compile({nowarn_unused_function,merge_msg_export_logs_service_response/3}). +merge_msg_export_logs_service_response(PMsg, NMsg, TrUserData) -> + S1 = #{}, + case {PMsg, NMsg} of + {#{partial_success := PFpartial_success}, #{partial_success := NFpartial_success}} -> S1#{partial_success => merge_msg_export_logs_partial_success(PFpartial_success, NFpartial_success, TrUserData)}; + {_, #{partial_success := NFpartial_success}} -> S1#{partial_success => NFpartial_success}; + {#{partial_success := PFpartial_success}, _} -> S1#{partial_success => PFpartial_success}; + {_, _} -> S1 + end. + +-compile({nowarn_unused_function,merge_msg_export_logs_partial_success/3}). +merge_msg_export_logs_partial_success(PMsg, NMsg, _) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {_, #{rejected_log_records := NFrejected_log_records}} -> S1#{rejected_log_records => NFrejected_log_records}; + {#{rejected_log_records := PFrejected_log_records}, _} -> S1#{rejected_log_records => PFrejected_log_records}; + _ -> S1 + end, + case {PMsg, NMsg} of + {_, #{error_message := NFerror_message}} -> S2#{error_message => NFerror_message}; + {#{error_message := PFerror_message}, _} -> S2#{error_message => PFerror_message}; + _ -> S2 + end. + +-compile({nowarn_unused_function,merge_msg_logs_data/3}). +merge_msg_logs_data(PMsg, NMsg, TrUserData) -> + S1 = #{}, + case {PMsg, NMsg} of + {#{resource_logs := PFresource_logs}, #{resource_logs := NFresource_logs}} -> S1#{resource_logs => 'erlang_++'(PFresource_logs, NFresource_logs, TrUserData)}; + {_, #{resource_logs := NFresource_logs}} -> S1#{resource_logs => NFresource_logs}; + {#{resource_logs := PFresource_logs}, _} -> S1#{resource_logs => PFresource_logs}; + {_, _} -> S1 + end. + +-compile({nowarn_unused_function,merge_msg_resource_logs/3}). +merge_msg_resource_logs(PMsg, NMsg, TrUserData) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {#{resource := PFresource}, #{resource := NFresource}} -> S1#{resource => merge_msg_resource(PFresource, NFresource, TrUserData)}; + {_, #{resource := NFresource}} -> S1#{resource => NFresource}; + {#{resource := PFresource}, _} -> S1#{resource => PFresource}; + {_, _} -> S1 + end, + S3 = case {PMsg, NMsg} of + {#{scope_logs := PFscope_logs}, #{scope_logs := NFscope_logs}} -> S2#{scope_logs => 'erlang_++'(PFscope_logs, NFscope_logs, TrUserData)}; + {_, #{scope_logs := NFscope_logs}} -> S2#{scope_logs => NFscope_logs}; + {#{scope_logs := PFscope_logs}, _} -> S2#{scope_logs => PFscope_logs}; + {_, _} -> S2 + end, + case {PMsg, NMsg} of + {_, #{schema_url := NFschema_url}} -> S3#{schema_url => NFschema_url}; + {#{schema_url := PFschema_url}, _} -> S3#{schema_url => PFschema_url}; + _ -> S3 + end. + +-compile({nowarn_unused_function,merge_msg_scope_logs/3}). +merge_msg_scope_logs(PMsg, NMsg, TrUserData) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {#{scope := PFscope}, #{scope := NFscope}} -> S1#{scope => merge_msg_instrumentation_scope(PFscope, NFscope, TrUserData)}; + {_, #{scope := NFscope}} -> S1#{scope => NFscope}; + {#{scope := PFscope}, _} -> S1#{scope => PFscope}; + {_, _} -> S1 + end, + S3 = case {PMsg, NMsg} of + {#{log_records := PFlog_records}, #{log_records := NFlog_records}} -> S2#{log_records => 'erlang_++'(PFlog_records, NFlog_records, TrUserData)}; + {_, #{log_records := NFlog_records}} -> S2#{log_records => NFlog_records}; + {#{log_records := PFlog_records}, _} -> S2#{log_records => PFlog_records}; + {_, _} -> S2 + end, + case {PMsg, NMsg} of + {_, #{schema_url := NFschema_url}} -> S3#{schema_url => NFschema_url}; + {#{schema_url := PFschema_url}, _} -> S3#{schema_url => PFschema_url}; + _ -> S3 + end. + +-compile({nowarn_unused_function,merge_msg_log_record/3}). +merge_msg_log_record(PMsg, NMsg, TrUserData) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {_, #{time_unix_nano := NFtime_unix_nano}} -> S1#{time_unix_nano => NFtime_unix_nano}; + {#{time_unix_nano := PFtime_unix_nano}, _} -> S1#{time_unix_nano => PFtime_unix_nano}; + _ -> S1 + end, + S3 = case {PMsg, NMsg} of + {_, #{observed_time_unix_nano := NFobserved_time_unix_nano}} -> S2#{observed_time_unix_nano => NFobserved_time_unix_nano}; + {#{observed_time_unix_nano := PFobserved_time_unix_nano}, _} -> S2#{observed_time_unix_nano => PFobserved_time_unix_nano}; + _ -> S2 + end, + S4 = case {PMsg, NMsg} of + {_, #{severity_number := NFseverity_number}} -> S3#{severity_number => NFseverity_number}; + {#{severity_number := PFseverity_number}, _} -> S3#{severity_number => PFseverity_number}; + _ -> S3 + end, + S5 = case {PMsg, NMsg} of + {_, #{severity_text := NFseverity_text}} -> S4#{severity_text => NFseverity_text}; + {#{severity_text := PFseverity_text}, _} -> S4#{severity_text => PFseverity_text}; + _ -> S4 + end, + S6 = case {PMsg, NMsg} of + {#{body := PFbody}, #{body := NFbody}} -> S5#{body => merge_msg_any_value(PFbody, NFbody, TrUserData)}; + {_, #{body := NFbody}} -> S5#{body => NFbody}; + {#{body := PFbody}, _} -> S5#{body => PFbody}; + {_, _} -> S5 + end, + S7 = case {PMsg, NMsg} of + {#{attributes := PFattributes}, #{attributes := NFattributes}} -> S6#{attributes => 'erlang_++'(PFattributes, NFattributes, TrUserData)}; + {_, #{attributes := NFattributes}} -> S6#{attributes => NFattributes}; + {#{attributes := PFattributes}, _} -> S6#{attributes => PFattributes}; + {_, _} -> S6 + end, + S8 = case {PMsg, NMsg} of + {_, #{dropped_attributes_count := NFdropped_attributes_count}} -> S7#{dropped_attributes_count => NFdropped_attributes_count}; + {#{dropped_attributes_count := PFdropped_attributes_count}, _} -> S7#{dropped_attributes_count => PFdropped_attributes_count}; + _ -> S7 + end, + S9 = case {PMsg, NMsg} of + {_, #{flags := NFflags}} -> S8#{flags => NFflags}; + {#{flags := PFflags}, _} -> S8#{flags => PFflags}; + _ -> S8 + end, + S10 = case {PMsg, NMsg} of + {_, #{trace_id := NFtrace_id}} -> S9#{trace_id => NFtrace_id}; + {#{trace_id := PFtrace_id}, _} -> S9#{trace_id => PFtrace_id}; + _ -> S9 + end, + case {PMsg, NMsg} of + {_, #{span_id := NFspan_id}} -> S10#{span_id => NFspan_id}; + {#{span_id := PFspan_id}, _} -> S10#{span_id => PFspan_id}; + _ -> S10 + end. + +-compile({nowarn_unused_function,merge_msg_any_value/3}). +merge_msg_any_value(PMsg, NMsg, TrUserData) -> + S1 = #{}, + case {PMsg, NMsg} of + {#{value := {array_value, OPFvalue}}, #{value := {array_value, ONFvalue}}} -> S1#{value => {array_value, merge_msg_array_value(OPFvalue, ONFvalue, TrUserData)}}; + {#{value := {kvlist_value, OPFvalue}}, #{value := {kvlist_value, ONFvalue}}} -> S1#{value => {kvlist_value, merge_msg_key_value_list(OPFvalue, ONFvalue, TrUserData)}}; + {_, #{value := NFvalue}} -> S1#{value => NFvalue}; + {#{value := PFvalue}, _} -> S1#{value => PFvalue}; + {_, _} -> S1 + end. + +-compile({nowarn_unused_function,merge_msg_array_value/3}). +merge_msg_array_value(PMsg, NMsg, TrUserData) -> + S1 = #{}, + case {PMsg, NMsg} of + {#{values := PFvalues}, #{values := NFvalues}} -> S1#{values => 'erlang_++'(PFvalues, NFvalues, TrUserData)}; + {_, #{values := NFvalues}} -> S1#{values => NFvalues}; + {#{values := PFvalues}, _} -> S1#{values => PFvalues}; + {_, _} -> S1 + end. + +-compile({nowarn_unused_function,merge_msg_key_value_list/3}). +merge_msg_key_value_list(PMsg, NMsg, TrUserData) -> + S1 = #{}, + case {PMsg, NMsg} of + {#{values := PFvalues}, #{values := NFvalues}} -> S1#{values => 'erlang_++'(PFvalues, NFvalues, TrUserData)}; + {_, #{values := NFvalues}} -> S1#{values => NFvalues}; + {#{values := PFvalues}, _} -> S1#{values => PFvalues}; + {_, _} -> S1 + end. + +-compile({nowarn_unused_function,merge_msg_key_value/3}). +merge_msg_key_value(PMsg, NMsg, TrUserData) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {_, #{key := NFkey}} -> S1#{key => NFkey}; + {#{key := PFkey}, _} -> S1#{key => PFkey}; + _ -> S1 + end, + case {PMsg, NMsg} of + {#{value := PFvalue}, #{value := NFvalue}} -> S2#{value => merge_msg_any_value(PFvalue, NFvalue, TrUserData)}; + {_, #{value := NFvalue}} -> S2#{value => NFvalue}; + {#{value := PFvalue}, _} -> S2#{value => PFvalue}; + {_, _} -> S2 + end. + +-compile({nowarn_unused_function,merge_msg_instrumentation_scope/3}). +merge_msg_instrumentation_scope(PMsg, NMsg, TrUserData) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {_, #{name := NFname}} -> S1#{name => NFname}; + {#{name := PFname}, _} -> S1#{name => PFname}; + _ -> S1 + end, + S3 = case {PMsg, NMsg} of + {_, #{version := NFversion}} -> S2#{version => NFversion}; + {#{version := PFversion}, _} -> S2#{version => PFversion}; + _ -> S2 + end, + S4 = case {PMsg, NMsg} of + {#{attributes := PFattributes}, #{attributes := NFattributes}} -> S3#{attributes => 'erlang_++'(PFattributes, NFattributes, TrUserData)}; + {_, #{attributes := NFattributes}} -> S3#{attributes => NFattributes}; + {#{attributes := PFattributes}, _} -> S3#{attributes => PFattributes}; + {_, _} -> S3 + end, + case {PMsg, NMsg} of + {_, #{dropped_attributes_count := NFdropped_attributes_count}} -> S4#{dropped_attributes_count => NFdropped_attributes_count}; + {#{dropped_attributes_count := PFdropped_attributes_count}, _} -> S4#{dropped_attributes_count => PFdropped_attributes_count}; + _ -> S4 + end. + +-compile({nowarn_unused_function,merge_msg_resource/3}). +merge_msg_resource(PMsg, NMsg, TrUserData) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {#{attributes := PFattributes}, #{attributes := NFattributes}} -> S1#{attributes => 'erlang_++'(PFattributes, NFattributes, TrUserData)}; + {_, #{attributes := NFattributes}} -> S1#{attributes => NFattributes}; + {#{attributes := PFattributes}, _} -> S1#{attributes => PFattributes}; + {_, _} -> S1 + end, + case {PMsg, NMsg} of + {_, #{dropped_attributes_count := NFdropped_attributes_count}} -> S2#{dropped_attributes_count => NFdropped_attributes_count}; + {#{dropped_attributes_count := PFdropped_attributes_count}, _} -> S2#{dropped_attributes_count => PFdropped_attributes_count}; + _ -> S2 + end. + + +verify_msg(Msg, MsgName) when is_atom(MsgName) -> verify_msg(Msg, MsgName, []). + +verify_msg(Msg, MsgName, Opts) -> + TrUserData = proplists:get_value(user_data, Opts), + case MsgName of + export_logs_service_request -> v_msg_export_logs_service_request(Msg, [MsgName], TrUserData); + export_logs_service_response -> v_msg_export_logs_service_response(Msg, [MsgName], TrUserData); + export_logs_partial_success -> v_msg_export_logs_partial_success(Msg, [MsgName], TrUserData); + logs_data -> v_msg_logs_data(Msg, [MsgName], TrUserData); + resource_logs -> v_msg_resource_logs(Msg, [MsgName], TrUserData); + scope_logs -> v_msg_scope_logs(Msg, [MsgName], TrUserData); + log_record -> v_msg_log_record(Msg, [MsgName], TrUserData); + any_value -> v_msg_any_value(Msg, [MsgName], TrUserData); + array_value -> v_msg_array_value(Msg, [MsgName], TrUserData); + key_value_list -> v_msg_key_value_list(Msg, [MsgName], TrUserData); + key_value -> v_msg_key_value(Msg, [MsgName], TrUserData); + instrumentation_scope -> v_msg_instrumentation_scope(Msg, [MsgName], TrUserData); + resource -> v_msg_resource(Msg, [MsgName], TrUserData); + _ -> mk_type_error(not_a_known_message, Msg, []) + end. + + +-compile({nowarn_unused_function,v_msg_export_logs_service_request/3}). +-dialyzer({nowarn_function,v_msg_export_logs_service_request/3}). +v_msg_export_logs_service_request(#{} = M, Path, TrUserData) -> + case M of + #{resource_logs := F1} -> + if is_list(F1) -> + _ = [v_msg_resource_logs(Elem, [resource_logs | Path], TrUserData) || Elem <- F1], + ok; + true -> mk_type_error({invalid_list_of, {msg, resource_logs}}, F1, [resource_logs | Path]) + end; + _ -> ok + end, + lists:foreach(fun (resource_logs) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_export_logs_service_request(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), export_logs_service_request}, M, Path); +v_msg_export_logs_service_request(X, Path, _TrUserData) -> mk_type_error({expected_msg, export_logs_service_request}, X, Path). + +-compile({nowarn_unused_function,v_msg_export_logs_service_response/3}). +-dialyzer({nowarn_function,v_msg_export_logs_service_response/3}). +v_msg_export_logs_service_response(#{} = M, Path, TrUserData) -> + case M of + #{partial_success := F1} -> v_msg_export_logs_partial_success(F1, [partial_success | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (partial_success) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_export_logs_service_response(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), export_logs_service_response}, M, Path); +v_msg_export_logs_service_response(X, Path, _TrUserData) -> mk_type_error({expected_msg, export_logs_service_response}, X, Path). + +-compile({nowarn_unused_function,v_msg_export_logs_partial_success/3}). +-dialyzer({nowarn_function,v_msg_export_logs_partial_success/3}). +v_msg_export_logs_partial_success(#{} = M, Path, TrUserData) -> + case M of + #{rejected_log_records := F1} -> v_type_int64(F1, [rejected_log_records | Path], TrUserData); + _ -> ok + end, + case M of + #{error_message := F2} -> v_type_string(F2, [error_message | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (rejected_log_records) -> ok; + (error_message) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_export_logs_partial_success(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), export_logs_partial_success}, M, Path); +v_msg_export_logs_partial_success(X, Path, _TrUserData) -> mk_type_error({expected_msg, export_logs_partial_success}, X, Path). + +-compile({nowarn_unused_function,v_msg_logs_data/3}). +-dialyzer({nowarn_function,v_msg_logs_data/3}). +v_msg_logs_data(#{} = M, Path, TrUserData) -> + case M of + #{resource_logs := F1} -> + if is_list(F1) -> + _ = [v_msg_resource_logs(Elem, [resource_logs | Path], TrUserData) || Elem <- F1], + ok; + true -> mk_type_error({invalid_list_of, {msg, resource_logs}}, F1, [resource_logs | Path]) + end; + _ -> ok + end, + lists:foreach(fun (resource_logs) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_logs_data(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), logs_data}, M, Path); +v_msg_logs_data(X, Path, _TrUserData) -> mk_type_error({expected_msg, logs_data}, X, Path). + +-compile({nowarn_unused_function,v_msg_resource_logs/3}). +-dialyzer({nowarn_function,v_msg_resource_logs/3}). +v_msg_resource_logs(#{} = M, Path, TrUserData) -> + case M of + #{resource := F1} -> v_msg_resource(F1, [resource | Path], TrUserData); + _ -> ok + end, + case M of + #{scope_logs := F2} -> + if is_list(F2) -> + _ = [v_msg_scope_logs(Elem, [scope_logs | Path], TrUserData) || Elem <- F2], + ok; + true -> mk_type_error({invalid_list_of, {msg, scope_logs}}, F2, [scope_logs | Path]) + end; + _ -> ok + end, + case M of + #{schema_url := F3} -> v_type_string(F3, [schema_url | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (resource) -> ok; + (scope_logs) -> ok; + (schema_url) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_resource_logs(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), resource_logs}, M, Path); +v_msg_resource_logs(X, Path, _TrUserData) -> mk_type_error({expected_msg, resource_logs}, X, Path). + +-compile({nowarn_unused_function,v_msg_scope_logs/3}). +-dialyzer({nowarn_function,v_msg_scope_logs/3}). +v_msg_scope_logs(#{} = M, Path, TrUserData) -> + case M of + #{scope := F1} -> v_msg_instrumentation_scope(F1, [scope | Path], TrUserData); + _ -> ok + end, + case M of + #{log_records := F2} -> + if is_list(F2) -> + _ = [v_msg_log_record(Elem, [log_records | Path], TrUserData) || Elem <- F2], + ok; + true -> mk_type_error({invalid_list_of, {msg, log_record}}, F2, [log_records | Path]) + end; + _ -> ok + end, + case M of + #{schema_url := F3} -> v_type_string(F3, [schema_url | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (scope) -> ok; + (log_records) -> ok; + (schema_url) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_scope_logs(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), scope_logs}, M, Path); +v_msg_scope_logs(X, Path, _TrUserData) -> mk_type_error({expected_msg, scope_logs}, X, Path). + +-compile({nowarn_unused_function,v_msg_log_record/3}). +-dialyzer({nowarn_function,v_msg_log_record/3}). +v_msg_log_record(#{} = M, Path, TrUserData) -> + case M of + #{time_unix_nano := F1} -> v_type_fixed64(F1, [time_unix_nano | Path], TrUserData); + _ -> ok + end, + case M of + #{observed_time_unix_nano := F2} -> v_type_fixed64(F2, [observed_time_unix_nano | Path], TrUserData); + _ -> ok + end, + case M of + #{severity_number := F3} -> 'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'(F3, [severity_number | Path], TrUserData); + _ -> ok + end, + case M of + #{severity_text := F4} -> v_type_string(F4, [severity_text | Path], TrUserData); + _ -> ok + end, + case M of + #{body := F5} -> v_msg_any_value(F5, [body | Path], TrUserData); + _ -> ok + end, + case M of + #{attributes := F6} -> + if is_list(F6) -> + _ = [v_msg_key_value(Elem, [attributes | Path], TrUserData) || Elem <- F6], + ok; + true -> mk_type_error({invalid_list_of, {msg, key_value}}, F6, [attributes | Path]) + end; + _ -> ok + end, + case M of + #{dropped_attributes_count := F7} -> v_type_uint32(F7, [dropped_attributes_count | Path], TrUserData); + _ -> ok + end, + case M of + #{flags := F8} -> v_type_fixed32(F8, [flags | Path], TrUserData); + _ -> ok + end, + case M of + #{trace_id := F9} -> v_type_bytes(F9, [trace_id | Path], TrUserData); + _ -> ok + end, + case M of + #{span_id := F10} -> v_type_bytes(F10, [span_id | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (time_unix_nano) -> ok; + (observed_time_unix_nano) -> ok; + (severity_number) -> ok; + (severity_text) -> ok; + (body) -> ok; + (attributes) -> ok; + (dropped_attributes_count) -> ok; + (flags) -> ok; + (trace_id) -> ok; + (span_id) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_log_record(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), log_record}, M, Path); +v_msg_log_record(X, Path, _TrUserData) -> mk_type_error({expected_msg, log_record}, X, Path). + +-compile({nowarn_unused_function,v_msg_any_value/3}). +-dialyzer({nowarn_function,v_msg_any_value/3}). +v_msg_any_value(#{} = M, Path, TrUserData) -> + case M of + #{value := {string_value, OF1}} -> v_type_string(OF1, [string_value, value | Path], TrUserData); + #{value := {bool_value, OF1}} -> v_type_bool(OF1, [bool_value, value | Path], TrUserData); + #{value := {int_value, OF1}} -> v_type_int64(OF1, [int_value, value | Path], TrUserData); + #{value := {double_value, OF1}} -> v_type_double(OF1, [double_value, value | Path], TrUserData); + #{value := {array_value, OF1}} -> v_msg_array_value(OF1, [array_value, value | Path], TrUserData); + #{value := {kvlist_value, OF1}} -> v_msg_key_value_list(OF1, [kvlist_value, value | Path], TrUserData); + #{value := {bytes_value, OF1}} -> v_type_bytes(OF1, [bytes_value, value | Path], TrUserData); + #{value := F1} -> mk_type_error(invalid_oneof, F1, [value | Path]); + _ -> ok + end, + lists:foreach(fun (value) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_any_value(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), any_value}, M, Path); +v_msg_any_value(X, Path, _TrUserData) -> mk_type_error({expected_msg, any_value}, X, Path). + +-compile({nowarn_unused_function,v_msg_array_value/3}). +-dialyzer({nowarn_function,v_msg_array_value/3}). +v_msg_array_value(#{} = M, Path, TrUserData) -> + case M of + #{values := F1} -> + if is_list(F1) -> + _ = [v_msg_any_value(Elem, [values | Path], TrUserData) || Elem <- F1], + ok; + true -> mk_type_error({invalid_list_of, {msg, any_value}}, F1, [values | Path]) + end; + _ -> ok + end, + lists:foreach(fun (values) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_array_value(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), array_value}, M, Path); +v_msg_array_value(X, Path, _TrUserData) -> mk_type_error({expected_msg, array_value}, X, Path). + +-compile({nowarn_unused_function,v_msg_key_value_list/3}). +-dialyzer({nowarn_function,v_msg_key_value_list/3}). +v_msg_key_value_list(#{} = M, Path, TrUserData) -> + case M of + #{values := F1} -> + if is_list(F1) -> + _ = [v_msg_key_value(Elem, [values | Path], TrUserData) || Elem <- F1], + ok; + true -> mk_type_error({invalid_list_of, {msg, key_value}}, F1, [values | Path]) + end; + _ -> ok + end, + lists:foreach(fun (values) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_key_value_list(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), key_value_list}, M, Path); +v_msg_key_value_list(X, Path, _TrUserData) -> mk_type_error({expected_msg, key_value_list}, X, Path). + +-compile({nowarn_unused_function,v_msg_key_value/3}). +-dialyzer({nowarn_function,v_msg_key_value/3}). +v_msg_key_value(#{} = M, Path, TrUserData) -> + case M of + #{key := F1} -> v_type_string(F1, [key | Path], TrUserData); + _ -> ok + end, + case M of + #{value := F2} -> v_msg_any_value(F2, [value | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (key) -> ok; + (value) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_key_value(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), key_value}, M, Path); +v_msg_key_value(X, Path, _TrUserData) -> mk_type_error({expected_msg, key_value}, X, Path). + +-compile({nowarn_unused_function,v_msg_instrumentation_scope/3}). +-dialyzer({nowarn_function,v_msg_instrumentation_scope/3}). +v_msg_instrumentation_scope(#{} = M, Path, TrUserData) -> + case M of + #{name := F1} -> v_type_string(F1, [name | Path], TrUserData); + _ -> ok + end, + case M of + #{version := F2} -> v_type_string(F2, [version | Path], TrUserData); + _ -> ok + end, + case M of + #{attributes := F3} -> + if is_list(F3) -> + _ = [v_msg_key_value(Elem, [attributes | Path], TrUserData) || Elem <- F3], + ok; + true -> mk_type_error({invalid_list_of, {msg, key_value}}, F3, [attributes | Path]) + end; + _ -> ok + end, + case M of + #{dropped_attributes_count := F4} -> v_type_uint32(F4, [dropped_attributes_count | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (name) -> ok; + (version) -> ok; + (attributes) -> ok; + (dropped_attributes_count) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_instrumentation_scope(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), instrumentation_scope}, M, Path); +v_msg_instrumentation_scope(X, Path, _TrUserData) -> mk_type_error({expected_msg, instrumentation_scope}, X, Path). + +-compile({nowarn_unused_function,v_msg_resource/3}). +-dialyzer({nowarn_function,v_msg_resource/3}). +v_msg_resource(#{} = M, Path, TrUserData) -> + case M of + #{attributes := F1} -> + if is_list(F1) -> + _ = [v_msg_key_value(Elem, [attributes | Path], TrUserData) || Elem <- F1], + ok; + true -> mk_type_error({invalid_list_of, {msg, key_value}}, F1, [attributes | Path]) + end; + _ -> ok + end, + case M of + #{dropped_attributes_count := F2} -> v_type_uint32(F2, [dropped_attributes_count | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (attributes) -> ok; + (dropped_attributes_count) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_resource(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), resource}, M, Path); +v_msg_resource(X, Path, _TrUserData) -> mk_type_error({expected_msg, resource}, X, Path). + +-compile({nowarn_unused_function,'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'/3}). +-dialyzer({nowarn_function,'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'/3}). +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_UNSPECIFIED', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE2', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE3', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE4', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG2', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG3', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG4', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO2', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO3', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO4', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN2', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN3', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN4', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR2', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR3', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR4', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL2', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL3', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL4', _Path, _TrUserData) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'(V, _Path, _TrUserData) when -2147483648 =< V, V =< 2147483647, is_integer(V) -> ok; +'v_enum_opentelemetry.proto.logs.v1.SeverityNumber'(X, Path, _TrUserData) -> mk_type_error({invalid_enum, 'opentelemetry.proto.logs.v1.SeverityNumber'}, X, Path). + +-compile({nowarn_unused_function,v_type_int64/3}). +-dialyzer({nowarn_function,v_type_int64/3}). +v_type_int64(N, _Path, _TrUserData) when -9223372036854775808 =< N, N =< 9223372036854775807 -> ok; +v_type_int64(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, int64, signed, 64}, N, Path); +v_type_int64(X, Path, _TrUserData) -> mk_type_error({bad_integer, int64, signed, 64}, X, Path). + +-compile({nowarn_unused_function,v_type_uint32/3}). +-dialyzer({nowarn_function,v_type_uint32/3}). +v_type_uint32(N, _Path, _TrUserData) when 0 =< N, N =< 4294967295 -> ok; +v_type_uint32(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, uint32, unsigned, 32}, N, Path); +v_type_uint32(X, Path, _TrUserData) -> mk_type_error({bad_integer, uint32, unsigned, 32}, X, Path). + +-compile({nowarn_unused_function,v_type_fixed32/3}). +-dialyzer({nowarn_function,v_type_fixed32/3}). +v_type_fixed32(N, _Path, _TrUserData) when 0 =< N, N =< 4294967295 -> ok; +v_type_fixed32(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, fixed32, unsigned, 32}, N, Path); +v_type_fixed32(X, Path, _TrUserData) -> mk_type_error({bad_integer, fixed32, unsigned, 32}, X, Path). + +-compile({nowarn_unused_function,v_type_fixed64/3}). +-dialyzer({nowarn_function,v_type_fixed64/3}). +v_type_fixed64(N, _Path, _TrUserData) when 0 =< N, N =< 18446744073709551615 -> ok; +v_type_fixed64(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, fixed64, unsigned, 64}, N, Path); +v_type_fixed64(X, Path, _TrUserData) -> mk_type_error({bad_integer, fixed64, unsigned, 64}, X, Path). + +-compile({nowarn_unused_function,v_type_bool/3}). +-dialyzer({nowarn_function,v_type_bool/3}). +v_type_bool(false, _Path, _TrUserData) -> ok; +v_type_bool(true, _Path, _TrUserData) -> ok; +v_type_bool(0, _Path, _TrUserData) -> ok; +v_type_bool(1, _Path, _TrUserData) -> ok; +v_type_bool(X, Path, _TrUserData) -> mk_type_error(bad_boolean_value, X, Path). + +-compile({nowarn_unused_function,v_type_double/3}). +-dialyzer({nowarn_function,v_type_double/3}). +v_type_double(N, _Path, _TrUserData) when is_float(N) -> ok; +v_type_double(N, _Path, _TrUserData) when is_integer(N) -> ok; +v_type_double(infinity, _Path, _TrUserData) -> ok; +v_type_double('-infinity', _Path, _TrUserData) -> ok; +v_type_double(nan, _Path, _TrUserData) -> ok; +v_type_double(X, Path, _TrUserData) -> mk_type_error(bad_double_value, X, Path). + +-compile({nowarn_unused_function,v_type_string/3}). +-dialyzer({nowarn_function,v_type_string/3}). +v_type_string(S, Path, _TrUserData) when is_list(S); is_binary(S) -> + try unicode:characters_to_binary(S) of + B when is_binary(B) -> ok; + {error, _, _} -> mk_type_error(bad_unicode_string, S, Path) + catch + error:badarg -> mk_type_error(bad_unicode_string, S, Path) + end; +v_type_string(X, Path, _TrUserData) -> mk_type_error(bad_unicode_string, X, Path). + +-compile({nowarn_unused_function,v_type_bytes/3}). +-dialyzer({nowarn_function,v_type_bytes/3}). +v_type_bytes(B, _Path, _TrUserData) when is_binary(B) -> ok; +v_type_bytes(B, _Path, _TrUserData) when is_list(B) -> ok; +v_type_bytes(X, Path, _TrUserData) -> mk_type_error(bad_binary_value, X, Path). + +-compile({nowarn_unused_function,mk_type_error/3}). +-spec mk_type_error(_, _, list()) -> no_return(). +mk_type_error(Error, ValueSeen, Path) -> + Path2 = prettify_path(Path), + erlang:error({gpb_type_error, {Error, [{value, ValueSeen}, {path, Path2}]}}). + + +-compile({nowarn_unused_function,prettify_path/1}). +-dialyzer({nowarn_function,prettify_path/1}). +prettify_path([]) -> top_level; +prettify_path(PathR) -> lists:append(lists:join(".", lists:map(fun atom_to_list/1, lists:reverse(PathR)))). + + +-compile({nowarn_unused_function,id/2}). +-compile({inline,id/2}). +id(X, _TrUserData) -> X. + +-compile({nowarn_unused_function,v_ok/3}). +-compile({inline,v_ok/3}). +v_ok(_Value, _Path, _TrUserData) -> ok. + +-compile({nowarn_unused_function,m_overwrite/3}). +-compile({inline,m_overwrite/3}). +m_overwrite(_Prev, New, _TrUserData) -> New. + +-compile({nowarn_unused_function,cons/3}). +-compile({inline,cons/3}). +cons(Elem, Acc, _TrUserData) -> [Elem | Acc]. + +-compile({nowarn_unused_function,lists_reverse/2}). +-compile({inline,lists_reverse/2}). +'lists_reverse'(L, _TrUserData) -> lists:reverse(L). +-compile({nowarn_unused_function,'erlang_++'/3}). +-compile({inline,'erlang_++'/3}). +'erlang_++'(A, B, _TrUserData) -> A ++ B. + + +get_msg_defs() -> + [{{enum, 'opentelemetry.proto.logs.v1.SeverityNumber'}, + [{'SEVERITY_NUMBER_UNSPECIFIED', 0}, + {'SEVERITY_NUMBER_TRACE', 1}, + {'SEVERITY_NUMBER_TRACE2', 2}, + {'SEVERITY_NUMBER_TRACE3', 3}, + {'SEVERITY_NUMBER_TRACE4', 4}, + {'SEVERITY_NUMBER_DEBUG', 5}, + {'SEVERITY_NUMBER_DEBUG2', 6}, + {'SEVERITY_NUMBER_DEBUG3', 7}, + {'SEVERITY_NUMBER_DEBUG4', 8}, + {'SEVERITY_NUMBER_INFO', 9}, + {'SEVERITY_NUMBER_INFO2', 10}, + {'SEVERITY_NUMBER_INFO3', 11}, + {'SEVERITY_NUMBER_INFO4', 12}, + {'SEVERITY_NUMBER_WARN', 13}, + {'SEVERITY_NUMBER_WARN2', 14}, + {'SEVERITY_NUMBER_WARN3', 15}, + {'SEVERITY_NUMBER_WARN4', 16}, + {'SEVERITY_NUMBER_ERROR', 17}, + {'SEVERITY_NUMBER_ERROR2', 18}, + {'SEVERITY_NUMBER_ERROR3', 19}, + {'SEVERITY_NUMBER_ERROR4', 20}, + {'SEVERITY_NUMBER_FATAL', 21}, + {'SEVERITY_NUMBER_FATAL2', 22}, + {'SEVERITY_NUMBER_FATAL3', 23}, + {'SEVERITY_NUMBER_FATAL4', 24}]}, + {{enum, 'opentelemetry.proto.logs.v1.LogRecordFlags'}, [{'LOG_RECORD_FLAG_UNSPECIFIED', 0}, {'LOG_RECORD_FLAG_TRACE_FLAGS_MASK', 255}]}, + {{msg, export_logs_service_request}, [#{name => resource_logs, fnum => 1, rnum => 2, type => {msg, resource_logs}, occurrence => repeated, opts => []}]}, + {{msg, export_logs_service_response}, [#{name => partial_success, fnum => 1, rnum => 2, type => {msg, export_logs_partial_success}, occurrence => optional, opts => []}]}, + {{msg, export_logs_partial_success}, [#{name => rejected_log_records, fnum => 1, rnum => 2, type => int64, occurrence => optional, opts => []}, #{name => error_message, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}]}, + {{msg, logs_data}, [#{name => resource_logs, fnum => 1, rnum => 2, type => {msg, resource_logs}, occurrence => repeated, opts => []}]}, + {{msg, resource_logs}, + [#{name => resource, fnum => 1, rnum => 2, type => {msg, resource}, occurrence => optional, opts => []}, + #{name => scope_logs, fnum => 2, rnum => 3, type => {msg, scope_logs}, occurrence => repeated, opts => []}, + #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]}, + {{msg, scope_logs}, + [#{name => scope, fnum => 1, rnum => 2, type => {msg, instrumentation_scope}, occurrence => optional, opts => []}, + #{name => log_records, fnum => 2, rnum => 3, type => {msg, log_record}, occurrence => repeated, opts => []}, + #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]}, + {{msg, log_record}, + [#{name => time_unix_nano, fnum => 1, rnum => 2, type => fixed64, occurrence => optional, opts => []}, + #{name => observed_time_unix_nano, fnum => 11, rnum => 3, type => fixed64, occurrence => optional, opts => []}, + #{name => severity_number, fnum => 2, rnum => 4, type => {enum, 'opentelemetry.proto.logs.v1.SeverityNumber'}, occurrence => optional, opts => []}, + #{name => severity_text, fnum => 3, rnum => 5, type => string, occurrence => optional, opts => []}, + #{name => body, fnum => 5, rnum => 6, type => {msg, any_value}, occurrence => optional, opts => []}, + #{name => attributes, fnum => 6, rnum => 7, type => {msg, key_value}, occurrence => repeated, opts => []}, + #{name => dropped_attributes_count, fnum => 7, rnum => 8, type => uint32, occurrence => optional, opts => []}, + #{name => flags, fnum => 8, rnum => 9, type => fixed32, occurrence => optional, opts => []}, + #{name => trace_id, fnum => 9, rnum => 10, type => bytes, occurrence => optional, opts => []}, + #{name => span_id, fnum => 10, rnum => 11, type => bytes, occurrence => optional, opts => []}]}, + {{msg, any_value}, + [#{name => value, rnum => 2, + fields => + [#{name => string_value, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, + #{name => bool_value, fnum => 2, rnum => 2, type => bool, occurrence => optional, opts => []}, + #{name => int_value, fnum => 3, rnum => 2, type => int64, occurrence => optional, opts => []}, + #{name => double_value, fnum => 4, rnum => 2, type => double, occurrence => optional, opts => []}, + #{name => array_value, fnum => 5, rnum => 2, type => {msg, array_value}, occurrence => optional, opts => []}, + #{name => kvlist_value, fnum => 6, rnum => 2, type => {msg, key_value_list}, occurrence => optional, opts => []}, + #{name => bytes_value, fnum => 7, rnum => 2, type => bytes, occurrence => optional, opts => []}], + opts => []}]}, + {{msg, array_value}, [#{name => values, fnum => 1, rnum => 2, type => {msg, any_value}, occurrence => repeated, opts => []}]}, + {{msg, key_value_list}, [#{name => values, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}]}, + {{msg, key_value}, [#{name => key, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => value, fnum => 2, rnum => 3, type => {msg, any_value}, occurrence => optional, opts => []}]}, + {{msg, instrumentation_scope}, + [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, + #{name => version, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}, + #{name => attributes, fnum => 3, rnum => 4, type => {msg, key_value}, occurrence => repeated, opts => []}, + #{name => dropped_attributes_count, fnum => 4, rnum => 5, type => uint32, occurrence => optional, opts => []}]}, + {{msg, resource}, [#{name => attributes, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}, #{name => dropped_attributes_count, fnum => 2, rnum => 3, type => uint32, occurrence => optional, opts => []}]}]. + + +get_msg_names() -> [export_logs_service_request, export_logs_service_response, export_logs_partial_success, logs_data, resource_logs, scope_logs, log_record, any_value, array_value, key_value_list, key_value, instrumentation_scope, resource]. + + +get_group_names() -> []. + + +get_msg_or_group_names() -> + [export_logs_service_request, export_logs_service_response, export_logs_partial_success, logs_data, resource_logs, scope_logs, log_record, any_value, array_value, key_value_list, key_value, instrumentation_scope, resource]. + + +get_enum_names() -> ['opentelemetry.proto.logs.v1.SeverityNumber', 'opentelemetry.proto.logs.v1.LogRecordFlags']. + + +fetch_msg_def(MsgName) -> + case find_msg_def(MsgName) of + Fs when is_list(Fs) -> Fs; + error -> erlang:error({no_such_msg, MsgName}) + end. + + +fetch_enum_def(EnumName) -> + case find_enum_def(EnumName) of + Es when is_list(Es) -> Es; + error -> erlang:error({no_such_enum, EnumName}) + end. + + +find_msg_def(export_logs_service_request) -> [#{name => resource_logs, fnum => 1, rnum => 2, type => {msg, resource_logs}, occurrence => repeated, opts => []}]; +find_msg_def(export_logs_service_response) -> [#{name => partial_success, fnum => 1, rnum => 2, type => {msg, export_logs_partial_success}, occurrence => optional, opts => []}]; +find_msg_def(export_logs_partial_success) -> + [#{name => rejected_log_records, fnum => 1, rnum => 2, type => int64, occurrence => optional, opts => []}, #{name => error_message, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}]; +find_msg_def(logs_data) -> [#{name => resource_logs, fnum => 1, rnum => 2, type => {msg, resource_logs}, occurrence => repeated, opts => []}]; +find_msg_def(resource_logs) -> + [#{name => resource, fnum => 1, rnum => 2, type => {msg, resource}, occurrence => optional, opts => []}, + #{name => scope_logs, fnum => 2, rnum => 3, type => {msg, scope_logs}, occurrence => repeated, opts => []}, + #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]; +find_msg_def(scope_logs) -> + [#{name => scope, fnum => 1, rnum => 2, type => {msg, instrumentation_scope}, occurrence => optional, opts => []}, + #{name => log_records, fnum => 2, rnum => 3, type => {msg, log_record}, occurrence => repeated, opts => []}, + #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]; +find_msg_def(log_record) -> + [#{name => time_unix_nano, fnum => 1, rnum => 2, type => fixed64, occurrence => optional, opts => []}, + #{name => observed_time_unix_nano, fnum => 11, rnum => 3, type => fixed64, occurrence => optional, opts => []}, + #{name => severity_number, fnum => 2, rnum => 4, type => {enum, 'opentelemetry.proto.logs.v1.SeverityNumber'}, occurrence => optional, opts => []}, + #{name => severity_text, fnum => 3, rnum => 5, type => string, occurrence => optional, opts => []}, + #{name => body, fnum => 5, rnum => 6, type => {msg, any_value}, occurrence => optional, opts => []}, + #{name => attributes, fnum => 6, rnum => 7, type => {msg, key_value}, occurrence => repeated, opts => []}, + #{name => dropped_attributes_count, fnum => 7, rnum => 8, type => uint32, occurrence => optional, opts => []}, + #{name => flags, fnum => 8, rnum => 9, type => fixed32, occurrence => optional, opts => []}, + #{name => trace_id, fnum => 9, rnum => 10, type => bytes, occurrence => optional, opts => []}, + #{name => span_id, fnum => 10, rnum => 11, type => bytes, occurrence => optional, opts => []}]; +find_msg_def(any_value) -> + [#{name => value, rnum => 2, + fields => + [#{name => string_value, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, + #{name => bool_value, fnum => 2, rnum => 2, type => bool, occurrence => optional, opts => []}, + #{name => int_value, fnum => 3, rnum => 2, type => int64, occurrence => optional, opts => []}, + #{name => double_value, fnum => 4, rnum => 2, type => double, occurrence => optional, opts => []}, + #{name => array_value, fnum => 5, rnum => 2, type => {msg, array_value}, occurrence => optional, opts => []}, + #{name => kvlist_value, fnum => 6, rnum => 2, type => {msg, key_value_list}, occurrence => optional, opts => []}, + #{name => bytes_value, fnum => 7, rnum => 2, type => bytes, occurrence => optional, opts => []}], + opts => []}]; +find_msg_def(array_value) -> [#{name => values, fnum => 1, rnum => 2, type => {msg, any_value}, occurrence => repeated, opts => []}]; +find_msg_def(key_value_list) -> [#{name => values, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}]; +find_msg_def(key_value) -> [#{name => key, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => value, fnum => 2, rnum => 3, type => {msg, any_value}, occurrence => optional, opts => []}]; +find_msg_def(instrumentation_scope) -> + [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, + #{name => version, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}, + #{name => attributes, fnum => 3, rnum => 4, type => {msg, key_value}, occurrence => repeated, opts => []}, + #{name => dropped_attributes_count, fnum => 4, rnum => 5, type => uint32, occurrence => optional, opts => []}]; +find_msg_def(resource) -> [#{name => attributes, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}, #{name => dropped_attributes_count, fnum => 2, rnum => 3, type => uint32, occurrence => optional, opts => []}]; +find_msg_def(_) -> error. + + +find_enum_def('opentelemetry.proto.logs.v1.SeverityNumber') -> + [{'SEVERITY_NUMBER_UNSPECIFIED', 0}, + {'SEVERITY_NUMBER_TRACE', 1}, + {'SEVERITY_NUMBER_TRACE2', 2}, + {'SEVERITY_NUMBER_TRACE3', 3}, + {'SEVERITY_NUMBER_TRACE4', 4}, + {'SEVERITY_NUMBER_DEBUG', 5}, + {'SEVERITY_NUMBER_DEBUG2', 6}, + {'SEVERITY_NUMBER_DEBUG3', 7}, + {'SEVERITY_NUMBER_DEBUG4', 8}, + {'SEVERITY_NUMBER_INFO', 9}, + {'SEVERITY_NUMBER_INFO2', 10}, + {'SEVERITY_NUMBER_INFO3', 11}, + {'SEVERITY_NUMBER_INFO4', 12}, + {'SEVERITY_NUMBER_WARN', 13}, + {'SEVERITY_NUMBER_WARN2', 14}, + {'SEVERITY_NUMBER_WARN3', 15}, + {'SEVERITY_NUMBER_WARN4', 16}, + {'SEVERITY_NUMBER_ERROR', 17}, + {'SEVERITY_NUMBER_ERROR2', 18}, + {'SEVERITY_NUMBER_ERROR3', 19}, + {'SEVERITY_NUMBER_ERROR4', 20}, + {'SEVERITY_NUMBER_FATAL', 21}, + {'SEVERITY_NUMBER_FATAL2', 22}, + {'SEVERITY_NUMBER_FATAL3', 23}, + {'SEVERITY_NUMBER_FATAL4', 24}]; +find_enum_def('opentelemetry.proto.logs.v1.LogRecordFlags') -> [{'LOG_RECORD_FLAG_UNSPECIFIED', 0}, {'LOG_RECORD_FLAG_TRACE_FLAGS_MASK', 255}]; +find_enum_def(_) -> error. + + +enum_symbol_by_value('opentelemetry.proto.logs.v1.SeverityNumber', Value) -> 'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(Value); +enum_symbol_by_value('opentelemetry.proto.logs.v1.LogRecordFlags', Value) -> 'enum_symbol_by_value_opentelemetry.proto.logs.v1.LogRecordFlags'(Value). + + +enum_value_by_symbol('opentelemetry.proto.logs.v1.SeverityNumber', Sym) -> 'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'(Sym); +enum_value_by_symbol('opentelemetry.proto.logs.v1.LogRecordFlags', Sym) -> 'enum_value_by_symbol_opentelemetry.proto.logs.v1.LogRecordFlags'(Sym). + + +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(0) -> 'SEVERITY_NUMBER_UNSPECIFIED'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(1) -> 'SEVERITY_NUMBER_TRACE'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(2) -> 'SEVERITY_NUMBER_TRACE2'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(3) -> 'SEVERITY_NUMBER_TRACE3'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(4) -> 'SEVERITY_NUMBER_TRACE4'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(5) -> 'SEVERITY_NUMBER_DEBUG'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(6) -> 'SEVERITY_NUMBER_DEBUG2'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(7) -> 'SEVERITY_NUMBER_DEBUG3'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(8) -> 'SEVERITY_NUMBER_DEBUG4'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(9) -> 'SEVERITY_NUMBER_INFO'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(10) -> 'SEVERITY_NUMBER_INFO2'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(11) -> 'SEVERITY_NUMBER_INFO3'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(12) -> 'SEVERITY_NUMBER_INFO4'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(13) -> 'SEVERITY_NUMBER_WARN'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(14) -> 'SEVERITY_NUMBER_WARN2'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(15) -> 'SEVERITY_NUMBER_WARN3'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(16) -> 'SEVERITY_NUMBER_WARN4'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(17) -> 'SEVERITY_NUMBER_ERROR'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(18) -> 'SEVERITY_NUMBER_ERROR2'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(19) -> 'SEVERITY_NUMBER_ERROR3'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(20) -> 'SEVERITY_NUMBER_ERROR4'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(21) -> 'SEVERITY_NUMBER_FATAL'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(22) -> 'SEVERITY_NUMBER_FATAL2'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(23) -> 'SEVERITY_NUMBER_FATAL3'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.SeverityNumber'(24) -> 'SEVERITY_NUMBER_FATAL4'. + + +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_UNSPECIFIED') -> 0; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE') -> 1; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE2') -> 2; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE3') -> 3; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_TRACE4') -> 4; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG') -> 5; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG2') -> 6; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG3') -> 7; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_DEBUG4') -> 8; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO') -> 9; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO2') -> 10; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO3') -> 11; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_INFO4') -> 12; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN') -> 13; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN2') -> 14; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN3') -> 15; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_WARN4') -> 16; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR') -> 17; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR2') -> 18; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR3') -> 19; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_ERROR4') -> 20; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL') -> 21; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL2') -> 22; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL3') -> 23; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.SeverityNumber'('SEVERITY_NUMBER_FATAL4') -> 24. + +'enum_symbol_by_value_opentelemetry.proto.logs.v1.LogRecordFlags'(0) -> 'LOG_RECORD_FLAG_UNSPECIFIED'; +'enum_symbol_by_value_opentelemetry.proto.logs.v1.LogRecordFlags'(255) -> 'LOG_RECORD_FLAG_TRACE_FLAGS_MASK'. + + +'enum_value_by_symbol_opentelemetry.proto.logs.v1.LogRecordFlags'('LOG_RECORD_FLAG_UNSPECIFIED') -> 0; +'enum_value_by_symbol_opentelemetry.proto.logs.v1.LogRecordFlags'('LOG_RECORD_FLAG_TRACE_FLAGS_MASK') -> 255. + + +get_service_names() -> ['opentelemetry.proto.collector.logs.v1.LogsService']. + + +get_service_def('opentelemetry.proto.collector.logs.v1.LogsService') -> + {{service, 'opentelemetry.proto.collector.logs.v1.LogsService'}, [#{name => 'Export', input => export_logs_service_request, output => export_logs_service_response, input_stream => false, output_stream => false, opts => []}]}; +get_service_def(_) -> error. + + +get_rpc_names('opentelemetry.proto.collector.logs.v1.LogsService') -> ['Export']; +get_rpc_names(_) -> error. + + +find_rpc_def('opentelemetry.proto.collector.logs.v1.LogsService', RpcName) -> 'find_rpc_def_opentelemetry.proto.collector.logs.v1.LogsService'(RpcName); +find_rpc_def(_, _) -> error. + + +'find_rpc_def_opentelemetry.proto.collector.logs.v1.LogsService'('Export') -> #{name => 'Export', input => export_logs_service_request, output => export_logs_service_response, input_stream => false, output_stream => false, opts => []}; +'find_rpc_def_opentelemetry.proto.collector.logs.v1.LogsService'(_) -> error. + + +fetch_rpc_def(ServiceName, RpcName) -> + case find_rpc_def(ServiceName, RpcName) of + Def when is_map(Def) -> Def; + error -> erlang:error({no_such_rpc, ServiceName, RpcName}) + end. + + +%% Convert a a fully qualified (ie with package name) service name +%% as a binary to a service name as an atom. +fqbin_to_service_name(<<"opentelemetry.proto.collector.logs.v1.LogsService">>) -> 'opentelemetry.proto.collector.logs.v1.LogsService'; +fqbin_to_service_name(X) -> error({gpb_error, {badservice, X}}). + + +%% Convert a service name as an atom to a fully qualified +%% (ie with package name) name as a binary. +service_name_to_fqbin('opentelemetry.proto.collector.logs.v1.LogsService') -> <<"opentelemetry.proto.collector.logs.v1.LogsService">>; +service_name_to_fqbin(X) -> error({gpb_error, {badservice, X}}). + + +%% Convert a a fully qualified (ie with package name) service name +%% and an rpc name, both as binaries to a service name and an rpc +%% name, as atoms. +fqbins_to_service_and_rpc_name(<<"opentelemetry.proto.collector.logs.v1.LogsService">>, <<"Export">>) -> {'opentelemetry.proto.collector.logs.v1.LogsService', 'Export'}; +fqbins_to_service_and_rpc_name(S, R) -> error({gpb_error, {badservice_or_rpc, {S, R}}}). + + +%% Convert a service name and an rpc name, both as atoms, +%% to a fully qualified (ie with package name) service name and +%% an rpc name as binaries. +service_and_rpc_name_to_fqbins('opentelemetry.proto.collector.logs.v1.LogsService', 'Export') -> {<<"opentelemetry.proto.collector.logs.v1.LogsService">>, <<"Export">>}; +service_and_rpc_name_to_fqbins(S, R) -> error({gpb_error, {badservice_or_rpc, {S, R}}}). + + +fqbin_to_msg_name(<<"opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest">>) -> export_logs_service_request; +fqbin_to_msg_name(<<"opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse">>) -> export_logs_service_response; +fqbin_to_msg_name(<<"opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess">>) -> export_logs_partial_success; +fqbin_to_msg_name(<<"opentelemetry.proto.logs.v1.LogsData">>) -> logs_data; +fqbin_to_msg_name(<<"opentelemetry.proto.logs.v1.ResourceLogs">>) -> resource_logs; +fqbin_to_msg_name(<<"opentelemetry.proto.logs.v1.ScopeLogs">>) -> scope_logs; +fqbin_to_msg_name(<<"opentelemetry.proto.logs.v1.LogRecord">>) -> log_record; +fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.AnyValue">>) -> any_value; +fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.ArrayValue">>) -> array_value; +fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.KeyValueList">>) -> key_value_list; +fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.KeyValue">>) -> key_value; +fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.InstrumentationScope">>) -> instrumentation_scope; +fqbin_to_msg_name(<<"opentelemetry.proto.resource.v1.Resource">>) -> resource; +fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}). + + +msg_name_to_fqbin(export_logs_service_request) -> <<"opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest">>; +msg_name_to_fqbin(export_logs_service_response) -> <<"opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse">>; +msg_name_to_fqbin(export_logs_partial_success) -> <<"opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess">>; +msg_name_to_fqbin(logs_data) -> <<"opentelemetry.proto.logs.v1.LogsData">>; +msg_name_to_fqbin(resource_logs) -> <<"opentelemetry.proto.logs.v1.ResourceLogs">>; +msg_name_to_fqbin(scope_logs) -> <<"opentelemetry.proto.logs.v1.ScopeLogs">>; +msg_name_to_fqbin(log_record) -> <<"opentelemetry.proto.logs.v1.LogRecord">>; +msg_name_to_fqbin(any_value) -> <<"opentelemetry.proto.common.v1.AnyValue">>; +msg_name_to_fqbin(array_value) -> <<"opentelemetry.proto.common.v1.ArrayValue">>; +msg_name_to_fqbin(key_value_list) -> <<"opentelemetry.proto.common.v1.KeyValueList">>; +msg_name_to_fqbin(key_value) -> <<"opentelemetry.proto.common.v1.KeyValue">>; +msg_name_to_fqbin(instrumentation_scope) -> <<"opentelemetry.proto.common.v1.InstrumentationScope">>; +msg_name_to_fqbin(resource) -> <<"opentelemetry.proto.resource.v1.Resource">>; +msg_name_to_fqbin(E) -> error({gpb_error, {badmsg, E}}). + + +fqbin_to_enum_name(<<"opentelemetry.proto.logs.v1.SeverityNumber">>) -> 'opentelemetry.proto.logs.v1.SeverityNumber'; +fqbin_to_enum_name(<<"opentelemetry.proto.logs.v1.LogRecordFlags">>) -> 'opentelemetry.proto.logs.v1.LogRecordFlags'; +fqbin_to_enum_name(E) -> error({gpb_error, {badenum, E}}). + + +enum_name_to_fqbin('opentelemetry.proto.logs.v1.SeverityNumber') -> <<"opentelemetry.proto.logs.v1.SeverityNumber">>; +enum_name_to_fqbin('opentelemetry.proto.logs.v1.LogRecordFlags') -> <<"opentelemetry.proto.logs.v1.LogRecordFlags">>; +enum_name_to_fqbin(E) -> error({gpb_error, {badenum, E}}). + + +get_package_name() -> 'opentelemetry.proto.collector.logs.v1'. + + +%% Whether or not the message names +%% are prepended with package name or not. +uses_packages() -> true. + + +source_basename() -> "logs_service.proto". + + +%% Retrieve all proto file names, also imported ones. +%% The order is top-down. The first element is always the main +%% source file. The files are returned with extension, +%% see get_all_proto_names/0 for a version that returns +%% the basenames sans extension +get_all_source_basenames() -> ["logs_service.proto", "logs.proto", "common.proto", "resource.proto"]. + + +%% Retrieve all proto file names, also imported ones. +%% The order is top-down. The first element is always the main +%% source file. The files are returned sans .proto extension, +%% to make it easier to use them with the various get_xyz_containment +%% functions. +get_all_proto_names() -> ["logs_service", "logs", "common", "resource"]. + + +get_msg_containment("logs_service") -> [export_logs_partial_success, export_logs_service_request, export_logs_service_response]; +get_msg_containment("logs") -> [log_record, logs_data, resource_logs, scope_logs]; +get_msg_containment("common") -> [any_value, array_value, instrumentation_scope, key_value, key_value_list]; +get_msg_containment("resource") -> [resource]; +get_msg_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_pkg_containment("logs_service") -> 'opentelemetry.proto.collector.logs.v1'; +get_pkg_containment("logs") -> 'opentelemetry.proto.logs.v1'; +get_pkg_containment("common") -> 'opentelemetry.proto.common.v1'; +get_pkg_containment("resource") -> 'opentelemetry.proto.resource.v1'; +get_pkg_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_service_containment("logs_service") -> ['opentelemetry.proto.collector.logs.v1.LogsService']; +get_service_containment("logs") -> []; +get_service_containment("common") -> []; +get_service_containment("resource") -> []; +get_service_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_rpc_containment("logs_service") -> [{'opentelemetry.proto.collector.logs.v1.LogsService', 'Export'}]; +get_rpc_containment("logs") -> []; +get_rpc_containment("common") -> []; +get_rpc_containment("resource") -> []; +get_rpc_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_enum_containment("logs_service") -> []; +get_enum_containment("logs") -> ['opentelemetry.proto.logs.v1.LogRecordFlags', 'opentelemetry.proto.logs.v1.SeverityNumber']; +get_enum_containment("common") -> []; +get_enum_containment("resource") -> []; +get_enum_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.logs.v1.LogsData">>) -> "logs"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.logs.v1.ScopeLogs">>) -> "logs"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.logs.v1.ResourceLogs">>) -> "logs"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess">>) -> "logs_service"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.KeyValueList">>) -> "common"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.logs.v1.LogRecord">>) -> "logs"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest">>) -> "logs_service"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.resource.v1.Resource">>) -> "resource"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.KeyValue">>) -> "common"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.InstrumentationScope">>) -> "common"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.ArrayValue">>) -> "common"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.AnyValue">>) -> "common"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse">>) -> "logs_service"; +get_proto_by_msg_name_as_fqbin(E) -> error({gpb_error, {badmsg, E}}). + + +get_proto_by_service_name_as_fqbin(<<"opentelemetry.proto.collector.logs.v1.LogsService">>) -> "logs_service"; +get_proto_by_service_name_as_fqbin(E) -> error({gpb_error, {badservice, E}}). + + +get_proto_by_enum_name_as_fqbin(<<"opentelemetry.proto.logs.v1.SeverityNumber">>) -> "logs"; +get_proto_by_enum_name_as_fqbin(<<"opentelemetry.proto.logs.v1.LogRecordFlags">>) -> "logs"; +get_proto_by_enum_name_as_fqbin(E) -> error({gpb_error, {badenum, E}}). + + +get_protos_by_pkg_name_as_fqbin(<<"opentelemetry.proto.resource.v1">>) -> ["resource"]; +get_protos_by_pkg_name_as_fqbin(<<"opentelemetry.proto.common.v1">>) -> ["common"]; +get_protos_by_pkg_name_as_fqbin(<<"opentelemetry.proto.logs.v1">>) -> ["logs"]; +get_protos_by_pkg_name_as_fqbin(<<"opentelemetry.proto.collector.logs.v1">>) -> ["logs_service"]; +get_protos_by_pkg_name_as_fqbin(E) -> error({gpb_error, {badpkg, E}}). + + + +gpb_version_as_string() -> + "4.19.5". + +gpb_version_as_list() -> + [4,19,5]. + +gpb_version_source() -> + "file". diff --git a/apps/opentelemetry_exporter/src/opentelemetry_exporter_metrics_service_pb.erl b/apps/opentelemetry_exporter/src/opentelemetry_exporter_metrics_service_pb.erl index 09200972..6c974216 100644 --- a/apps/opentelemetry_exporter/src/opentelemetry_exporter_metrics_service_pb.erl +++ b/apps/opentelemetry_exporter/src/opentelemetry_exporter_metrics_service_pb.erl @@ -60,7 +60,12 @@ }. -type export_metrics_service_response() :: - #{ + #{partial_success => export_metrics_partial_success() % = 1, optional + }. + +-type export_metrics_partial_success() :: + #{rejected_data_points => integer(), % = 1, optional, 64 bits + error_message => unicode:chardata() % = 2, optional }. -type metrics_data() :: @@ -70,7 +75,6 @@ -type resource_metrics() :: #{resource => resource(), % = 1, optional scope_metrics => [scope_metrics()], % = 2, repeated - instrumentation_library_metrics => [instrumentation_library_metrics()], % = 1000, repeated schema_url => unicode:chardata() % = 3, optional }. @@ -80,12 +84,6 @@ schema_url => unicode:chardata() % = 3, optional }. --type instrumentation_library_metrics() :: - #{instrumentation_library => instrumentation_library(), % = 1, optional - metrics => [metric()], % = 2, repeated - schema_url => unicode:chardata() % = 3, optional - }. - -type metric() :: #{name => unicode:chardata(), % = 1, optional description => unicode:chardata(), % = 2, optional @@ -201,14 +199,11 @@ value => any_value() % = 2, optional }. --type instrumentation_library() :: - #{name => unicode:chardata(), % = 1, optional - version => unicode:chardata() % = 2, optional - }. - -type instrumentation_scope() :: #{name => unicode:chardata(), % = 1, optional - version => unicode:chardata() % = 2, optional + version => unicode:chardata(), % = 2, optional + attributes => [key_value()], % = 3, repeated + dropped_attributes_count => non_neg_integer() % = 4, optional, 32 bits }. -type resource() :: @@ -216,9 +211,9 @@ dropped_attributes_count => non_neg_integer() % = 2, optional, 32 bits }. --export_type(['export_metrics_service_request'/0, 'export_metrics_service_response'/0, 'metrics_data'/0, 'resource_metrics'/0, 'scope_metrics'/0, 'instrumentation_library_metrics'/0, 'metric'/0, 'gauge'/0, 'sum'/0, 'histogram'/0, 'exponential_histogram'/0, 'summary'/0, 'number_data_point'/0, 'histogram_data_point'/0, 'buckets'/0, 'exponential_histogram_data_point'/0, 'value_at_quantile'/0, 'summary_data_point'/0, 'exemplar'/0, 'any_value'/0, 'array_value'/0, 'key_value_list'/0, 'key_value'/0, 'instrumentation_library'/0, 'instrumentation_scope'/0, 'resource'/0]). --type '$msg_name'() :: export_metrics_service_request | export_metrics_service_response | metrics_data | resource_metrics | scope_metrics | instrumentation_library_metrics | metric | gauge | sum | histogram | exponential_histogram | summary | number_data_point | histogram_data_point | buckets | exponential_histogram_data_point | value_at_quantile | summary_data_point | exemplar | any_value | array_value | key_value_list | key_value | instrumentation_library | instrumentation_scope | resource. --type '$msg'() :: export_metrics_service_request() | export_metrics_service_response() | metrics_data() | resource_metrics() | scope_metrics() | instrumentation_library_metrics() | metric() | gauge() | sum() | histogram() | exponential_histogram() | summary() | number_data_point() | histogram_data_point() | buckets() | exponential_histogram_data_point() | value_at_quantile() | summary_data_point() | exemplar() | any_value() | array_value() | key_value_list() | key_value() | instrumentation_library() | instrumentation_scope() | resource(). +-export_type(['export_metrics_service_request'/0, 'export_metrics_service_response'/0, 'export_metrics_partial_success'/0, 'metrics_data'/0, 'resource_metrics'/0, 'scope_metrics'/0, 'metric'/0, 'gauge'/0, 'sum'/0, 'histogram'/0, 'exponential_histogram'/0, 'summary'/0, 'number_data_point'/0, 'histogram_data_point'/0, 'buckets'/0, 'exponential_histogram_data_point'/0, 'value_at_quantile'/0, 'summary_data_point'/0, 'exemplar'/0, 'any_value'/0, 'array_value'/0, 'key_value_list'/0, 'key_value'/0, 'instrumentation_scope'/0, 'resource'/0]). +-type '$msg_name'() :: export_metrics_service_request | export_metrics_service_response | export_metrics_partial_success | metrics_data | resource_metrics | scope_metrics | metric | gauge | sum | histogram | exponential_histogram | summary | number_data_point | histogram_data_point | buckets | exponential_histogram_data_point | value_at_quantile | summary_data_point | exemplar | any_value | array_value | key_value_list | key_value | instrumentation_scope | resource. +-type '$msg'() :: export_metrics_service_request() | export_metrics_service_response() | export_metrics_partial_success() | metrics_data() | resource_metrics() | scope_metrics() | metric() | gauge() | sum() | histogram() | exponential_histogram() | summary() | number_data_point() | histogram_data_point() | buckets() | exponential_histogram_data_point() | value_at_quantile() | summary_data_point() | exemplar() | any_value() | array_value() | key_value_list() | key_value() | instrumentation_scope() | resource(). -export_type(['$msg_name'/0, '$msg'/0]). -if(?OTP_RELEASE >= 24). @@ -240,10 +235,10 @@ encode_msg(Msg, MsgName, Opts) -> case MsgName of export_metrics_service_request -> encode_msg_export_metrics_service_request(id(Msg, TrUserData), TrUserData); export_metrics_service_response -> encode_msg_export_metrics_service_response(id(Msg, TrUserData), TrUserData); + export_metrics_partial_success -> encode_msg_export_metrics_partial_success(id(Msg, TrUserData), TrUserData); metrics_data -> encode_msg_metrics_data(id(Msg, TrUserData), TrUserData); resource_metrics -> encode_msg_resource_metrics(id(Msg, TrUserData), TrUserData); scope_metrics -> encode_msg_scope_metrics(id(Msg, TrUserData), TrUserData); - instrumentation_library_metrics -> encode_msg_instrumentation_library_metrics(id(Msg, TrUserData), TrUserData); metric -> encode_msg_metric(id(Msg, TrUserData), TrUserData); gauge -> encode_msg_gauge(id(Msg, TrUserData), TrUserData); sum -> encode_msg_sum(id(Msg, TrUserData), TrUserData); @@ -261,7 +256,6 @@ encode_msg(Msg, MsgName, Opts) -> array_value -> encode_msg_array_value(id(Msg, TrUserData), TrUserData); key_value_list -> encode_msg_key_value_list(id(Msg, TrUserData), TrUserData); key_value -> encode_msg_key_value(id(Msg, TrUserData), TrUserData); - instrumentation_library -> encode_msg_instrumentation_library(id(Msg, TrUserData), TrUserData); instrumentation_scope -> encode_msg_instrumentation_scope(id(Msg, TrUserData), TrUserData); resource -> encode_msg_resource(id(Msg, TrUserData), TrUserData) end. @@ -280,82 +274,79 @@ encode_msg_export_metrics_service_request(#{} = M, Bin, TrUserData) -> _ -> Bin end. -encode_msg_export_metrics_service_response(_Msg, _TrUserData) -> <<>>. - -encode_msg_metrics_data(Msg, TrUserData) -> encode_msg_metrics_data(Msg, <<>>, TrUserData). +encode_msg_export_metrics_service_response(Msg, TrUserData) -> encode_msg_export_metrics_service_response(Msg, <<>>, TrUserData). -encode_msg_metrics_data(#{} = M, Bin, TrUserData) -> +encode_msg_export_metrics_service_response(#{} = M, Bin, TrUserData) -> case M of - #{resource_metrics := F1} -> - TrF1 = id(F1, TrUserData), - if TrF1 == [] -> Bin; - true -> e_field_metrics_data_resource_metrics(TrF1, Bin, TrUserData) + #{partial_success := F1} -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> e_mfield_export_metrics_service_response_partial_success(TrF1, <>, TrUserData) + end end; _ -> Bin end. -encode_msg_resource_metrics(Msg, TrUserData) -> encode_msg_resource_metrics(Msg, <<>>, TrUserData). +encode_msg_export_metrics_partial_success(Msg, TrUserData) -> encode_msg_export_metrics_partial_success(Msg, <<>>, TrUserData). -encode_msg_resource_metrics(#{} = M, Bin, TrUserData) -> +encode_msg_export_metrics_partial_success(#{} = M, Bin, TrUserData) -> B1 = case M of - #{resource := F1} -> + #{rejected_data_points := F1} -> begin TrF1 = id(F1, TrUserData), - if TrF1 =:= undefined -> Bin; - true -> e_mfield_resource_metrics_resource(TrF1, <>, TrUserData) + if TrF1 =:= 0 -> Bin; + true -> e_type_int64(TrF1, <>, TrUserData) end end; _ -> Bin end, - B2 = case M of - #{scope_metrics := F2} -> - TrF2 = id(F2, TrUserData), - if TrF2 == [] -> B1; - true -> e_field_resource_metrics_scope_metrics(TrF2, B1, TrUserData) - end; - _ -> B1 - end, - B3 = case M of - #{instrumentation_library_metrics := F3} -> - TrF3 = id(F3, TrUserData), - if TrF3 == [] -> B2; - true -> e_field_resource_metrics_instrumentation_library_metrics(TrF3, B2, TrUserData) - end; - _ -> B2 - end, case M of - #{schema_url := F4} -> + #{error_message := F2} -> begin - TrF4 = id(F4, TrUserData), - case is_empty_string(TrF4) of - true -> B3; - false -> e_type_string(TrF4, <>, TrUserData) + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) end end; - _ -> B3 + _ -> B1 end. -encode_msg_scope_metrics(Msg, TrUserData) -> encode_msg_scope_metrics(Msg, <<>>, TrUserData). +encode_msg_metrics_data(Msg, TrUserData) -> encode_msg_metrics_data(Msg, <<>>, TrUserData). -encode_msg_scope_metrics(#{} = M, Bin, TrUserData) -> +encode_msg_metrics_data(#{} = M, Bin, TrUserData) -> + case M of + #{resource_metrics := F1} -> + TrF1 = id(F1, TrUserData), + if TrF1 == [] -> Bin; + true -> e_field_metrics_data_resource_metrics(TrF1, Bin, TrUserData) + end; + _ -> Bin + end. + +encode_msg_resource_metrics(Msg, TrUserData) -> encode_msg_resource_metrics(Msg, <<>>, TrUserData). + + +encode_msg_resource_metrics(#{} = M, Bin, TrUserData) -> B1 = case M of - #{scope := F1} -> + #{resource := F1} -> begin TrF1 = id(F1, TrUserData), if TrF1 =:= undefined -> Bin; - true -> e_mfield_scope_metrics_scope(TrF1, <>, TrUserData) + true -> e_mfield_resource_metrics_resource(TrF1, <>, TrUserData) end end; _ -> Bin end, B2 = case M of - #{metrics := F2} -> + #{scope_metrics := F2} -> TrF2 = id(F2, TrUserData), if TrF2 == [] -> B1; - true -> e_field_scope_metrics_metrics(TrF2, B1, TrUserData) + true -> e_field_resource_metrics_scope_metrics(TrF2, B1, TrUserData) end; _ -> B1 end, @@ -371,16 +362,16 @@ encode_msg_scope_metrics(#{} = M, Bin, TrUserData) -> _ -> B2 end. -encode_msg_instrumentation_library_metrics(Msg, TrUserData) -> encode_msg_instrumentation_library_metrics(Msg, <<>>, TrUserData). +encode_msg_scope_metrics(Msg, TrUserData) -> encode_msg_scope_metrics(Msg, <<>>, TrUserData). -encode_msg_instrumentation_library_metrics(#{} = M, Bin, TrUserData) -> +encode_msg_scope_metrics(#{} = M, Bin, TrUserData) -> B1 = case M of - #{instrumentation_library := F1} -> + #{scope := F1} -> begin TrF1 = id(F1, TrUserData), if TrF1 =:= undefined -> Bin; - true -> e_mfield_instrumentation_library_metrics_instrumentation_library(TrF1, <>, TrUserData) + true -> e_mfield_scope_metrics_scope(TrF1, <>, TrUserData) end end; _ -> Bin @@ -389,7 +380,7 @@ encode_msg_instrumentation_library_metrics(#{} = M, Bin, TrUserData) -> #{metrics := F2} -> TrF2 = id(F2, TrUserData), if TrF2 == [] -> B1; - true -> e_field_instrumentation_library_metrics_metrics(TrF2, B1, TrUserData) + true -> e_field_scope_metrics_metrics(TrF2, B1, TrUserData) end; _ -> B1 end, @@ -1062,10 +1053,10 @@ encode_msg_key_value(#{} = M, Bin, TrUserData) -> _ -> B1 end. -encode_msg_instrumentation_library(Msg, TrUserData) -> encode_msg_instrumentation_library(Msg, <<>>, TrUserData). +encode_msg_instrumentation_scope(Msg, TrUserData) -> encode_msg_instrumentation_scope(Msg, <<>>, TrUserData). -encode_msg_instrumentation_library(#{} = M, Bin, TrUserData) -> +encode_msg_instrumentation_scope(#{} = M, Bin, TrUserData) -> B1 = case M of #{name := F1} -> begin @@ -1077,43 +1068,34 @@ encode_msg_instrumentation_library(#{} = M, Bin, TrUserData) -> end; _ -> Bin end, - case M of - #{version := F2} -> - begin - TrF2 = id(F2, TrUserData), - case is_empty_string(TrF2) of - true -> B1; - false -> e_type_string(TrF2, <>, TrUserData) - end - end; - _ -> B1 - end. - -encode_msg_instrumentation_scope(Msg, TrUserData) -> encode_msg_instrumentation_scope(Msg, <<>>, TrUserData). - - -encode_msg_instrumentation_scope(#{} = M, Bin, TrUserData) -> - B1 = case M of - #{name := F1} -> + B2 = case M of + #{version := F2} -> begin - TrF1 = id(F1, TrUserData), - case is_empty_string(TrF1) of - true -> Bin; - false -> e_type_string(TrF1, <>, TrUserData) + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) end end; - _ -> Bin + _ -> B1 + end, + B3 = case M of + #{attributes := F3} -> + TrF3 = id(F3, TrUserData), + if TrF3 == [] -> B2; + true -> e_field_instrumentation_scope_attributes(TrF3, B2, TrUserData) + end; + _ -> B2 end, case M of - #{version := F2} -> + #{dropped_attributes_count := F4} -> begin - TrF2 = id(F2, TrUserData), - case is_empty_string(TrF2) of - true -> B1; - false -> e_type_string(TrF2, <>, TrUserData) + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) end end; - _ -> B1 + _ -> B3 end. encode_msg_resource(Msg, TrUserData) -> encode_msg_resource(Msg, <<>>, TrUserData). @@ -1150,6 +1132,11 @@ e_field_export_metrics_service_request_resource_metrics([Elem | Rest], Bin, TrUs e_field_export_metrics_service_request_resource_metrics(Rest, Bin3, TrUserData); e_field_export_metrics_service_request_resource_metrics([], Bin, _TrUserData) -> Bin. +e_mfield_export_metrics_service_response_partial_success(Msg, Bin, TrUserData) -> + SubBin = encode_msg_export_metrics_partial_success(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + e_mfield_metrics_data_resource_metrics(Msg, Bin, TrUserData) -> SubBin = encode_msg_resource_metrics(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -1177,17 +1164,6 @@ e_field_resource_metrics_scope_metrics([Elem | Rest], Bin, TrUserData) -> e_field_resource_metrics_scope_metrics(Rest, Bin3, TrUserData); e_field_resource_metrics_scope_metrics([], Bin, _TrUserData) -> Bin. -e_mfield_resource_metrics_instrumentation_library_metrics(Msg, Bin, TrUserData) -> - SubBin = encode_msg_instrumentation_library_metrics(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - -e_field_resource_metrics_instrumentation_library_metrics([Elem | Rest], Bin, TrUserData) -> - Bin2 = <>, - Bin3 = e_mfield_resource_metrics_instrumentation_library_metrics(id(Elem, TrUserData), Bin2, TrUserData), - e_field_resource_metrics_instrumentation_library_metrics(Rest, Bin3, TrUserData); -e_field_resource_metrics_instrumentation_library_metrics([], Bin, _TrUserData) -> Bin. - e_mfield_scope_metrics_scope(Msg, Bin, TrUserData) -> SubBin = encode_msg_instrumentation_scope(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -1204,22 +1180,6 @@ e_field_scope_metrics_metrics([Elem | Rest], Bin, TrUserData) -> e_field_scope_metrics_metrics(Rest, Bin3, TrUserData); e_field_scope_metrics_metrics([], Bin, _TrUserData) -> Bin. -e_mfield_instrumentation_library_metrics_instrumentation_library(Msg, Bin, TrUserData) -> - SubBin = encode_msg_instrumentation_library(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - -e_mfield_instrumentation_library_metrics_metrics(Msg, Bin, TrUserData) -> - SubBin = encode_msg_metric(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - -e_field_instrumentation_library_metrics_metrics([Elem | Rest], Bin, TrUserData) -> - Bin2 = <>, - Bin3 = e_mfield_instrumentation_library_metrics_metrics(id(Elem, TrUserData), Bin2, TrUserData), - e_field_instrumentation_library_metrics_metrics(Rest, Bin3, TrUserData); -e_field_instrumentation_library_metrics_metrics([], Bin, _TrUserData) -> Bin. - e_mfield_metric_gauge(Msg, Bin, TrUserData) -> SubBin = encode_msg_gauge(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -1486,6 +1446,17 @@ e_mfield_key_value_value(Msg, Bin, TrUserData) -> Bin2 = e_varint(byte_size(SubBin), Bin), <>. +e_mfield_instrumentation_scope_attributes(Msg, Bin, TrUserData) -> + SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_instrumentation_scope_attributes([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_instrumentation_scope_attributes(id(Elem, TrUserData), Bin2, TrUserData), + e_field_instrumentation_scope_attributes(Rest, Bin3, TrUserData); +e_field_instrumentation_scope_attributes([], Bin, _TrUserData) -> Bin. + e_mfield_resource_attributes(Msg, Bin, TrUserData) -> SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -1642,10 +1613,10 @@ decode_msg_1_catch(Bin, MsgName, TrUserData) -> decode_msg_2_doit(export_metrics_service_request, Bin, TrUserData) -> id(decode_msg_export_metrics_service_request(Bin, TrUserData), TrUserData); decode_msg_2_doit(export_metrics_service_response, Bin, TrUserData) -> id(decode_msg_export_metrics_service_response(Bin, TrUserData), TrUserData); +decode_msg_2_doit(export_metrics_partial_success, Bin, TrUserData) -> id(decode_msg_export_metrics_partial_success(Bin, TrUserData), TrUserData); decode_msg_2_doit(metrics_data, Bin, TrUserData) -> id(decode_msg_metrics_data(Bin, TrUserData), TrUserData); decode_msg_2_doit(resource_metrics, Bin, TrUserData) -> id(decode_msg_resource_metrics(Bin, TrUserData), TrUserData); decode_msg_2_doit(scope_metrics, Bin, TrUserData) -> id(decode_msg_scope_metrics(Bin, TrUserData), TrUserData); -decode_msg_2_doit(instrumentation_library_metrics, Bin, TrUserData) -> id(decode_msg_instrumentation_library_metrics(Bin, TrUserData), TrUserData); decode_msg_2_doit(metric, Bin, TrUserData) -> id(decode_msg_metric(Bin, TrUserData), TrUserData); decode_msg_2_doit(gauge, Bin, TrUserData) -> id(decode_msg_gauge(Bin, TrUserData), TrUserData); decode_msg_2_doit(sum, Bin, TrUserData) -> id(decode_msg_sum(Bin, TrUserData), TrUserData); @@ -1663,7 +1634,6 @@ decode_msg_2_doit(any_value, Bin, TrUserData) -> id(decode_msg_any_value(Bin, Tr decode_msg_2_doit(array_value, Bin, TrUserData) -> id(decode_msg_array_value(Bin, TrUserData), TrUserData); decode_msg_2_doit(key_value_list, Bin, TrUserData) -> id(decode_msg_key_value_list(Bin, TrUserData), TrUserData); decode_msg_2_doit(key_value, Bin, TrUserData) -> id(decode_msg_key_value(Bin, TrUserData), TrUserData); -decode_msg_2_doit(instrumentation_library, Bin, TrUserData) -> id(decode_msg_instrumentation_library(Bin, TrUserData), TrUserData); decode_msg_2_doit(instrumentation_scope, Bin, TrUserData) -> id(decode_msg_instrumentation_scope(Bin, TrUserData), TrUserData); decode_msg_2_doit(resource, Bin, TrUserData) -> id(decode_msg_resource(Bin, TrUserData), TrUserData). @@ -1721,39 +1691,116 @@ skip_32_export_metrics_service_request(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, T skip_64_export_metrics_service_request(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_metrics_service_request(Rest, Z1, Z2, F, F@_1, TrUserData). -decode_msg_export_metrics_service_response(Bin, TrUserData) -> dfp_read_field_def_export_metrics_service_response(Bin, 0, 0, 0, TrUserData). +decode_msg_export_metrics_service_response(Bin, TrUserData) -> dfp_read_field_def_export_metrics_service_response(Bin, 0, 0, 0, id('$undef', TrUserData), TrUserData). + +dfp_read_field_def_export_metrics_service_response(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_export_metrics_service_response_partial_success(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_export_metrics_service_response(<<>>, 0, 0, _, F@_1, _) -> + S1 = #{}, + if F@_1 == '$undef' -> S1; + true -> S1#{partial_success => F@_1} + end; +dfp_read_field_def_export_metrics_service_response(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_export_metrics_service_response(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_export_metrics_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_metrics_service_response(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_export_metrics_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_export_metrics_service_response_partial_success(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_export_metrics_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_export_metrics_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_export_metrics_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_export_metrics_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_export_metrics_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_export_metrics_service_response(<<>>, 0, 0, _, F@_1, _) -> + S1 = #{}, + if F@_1 == '$undef' -> S1; + true -> S1#{partial_success => F@_1} + end. + +d_field_export_metrics_service_response_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_export_metrics_service_response_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_export_metrics_service_response_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_export_metrics_partial_success(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_export_metrics_service_response(RestF, + 0, + 0, + F, + if Prev == '$undef' -> NewFValue; + true -> merge_msg_export_metrics_partial_success(Prev, NewFValue, TrUserData) + end, + TrUserData). -dfp_read_field_def_export_metrics_service_response(<<>>, 0, 0, _, _) -> #{}; -dfp_read_field_def_export_metrics_service_response(Other, Z1, Z2, F, TrUserData) -> dg_read_field_def_export_metrics_service_response(Other, Z1, Z2, F, TrUserData). +skip_varint_export_metrics_service_response(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_export_metrics_service_response(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_export_metrics_service_response(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_metrics_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). -dg_read_field_def_export_metrics_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_metrics_service_response(Rest, N + 7, X bsl N + Acc, F, TrUserData); -dg_read_field_def_export_metrics_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, _, TrUserData) -> +skip_length_delimited_export_metrics_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_export_metrics_service_response(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_export_metrics_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_export_metrics_service_response(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_export_metrics_service_response(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_export_metrics_service_response(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_export_metrics_service_response(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_metrics_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_export_metrics_service_response(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_metrics_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_export_metrics_partial_success(Bin, TrUserData) -> dfp_read_field_def_export_metrics_partial_success(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_export_metrics_partial_success(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_export_metrics_partial_success_rejected_data_points(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_export_metrics_partial_success(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_export_metrics_partial_success_error_message(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_export_metrics_partial_success(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{rejected_data_points => F@_1, error_message => F@_2}; +dfp_read_field_def_export_metrics_partial_success(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_export_metrics_partial_success(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_export_metrics_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_metrics_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_export_metrics_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> Key = X bsl N + Acc, - case Key band 7 of - 0 -> skip_varint_export_metrics_service_response(Rest, 0, 0, Key bsr 3, TrUserData); - 1 -> skip_64_export_metrics_service_response(Rest, 0, 0, Key bsr 3, TrUserData); - 2 -> skip_length_delimited_export_metrics_service_response(Rest, 0, 0, Key bsr 3, TrUserData); - 3 -> skip_group_export_metrics_service_response(Rest, 0, 0, Key bsr 3, TrUserData); - 5 -> skip_32_export_metrics_service_response(Rest, 0, 0, Key bsr 3, TrUserData) + case Key of + 8 -> d_field_export_metrics_partial_success_rejected_data_points(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_export_metrics_partial_success_error_message(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_export_metrics_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_export_metrics_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_export_metrics_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_export_metrics_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_export_metrics_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end end; -dg_read_field_def_export_metrics_service_response(<<>>, 0, 0, _, _) -> #{}. +dg_read_field_def_export_metrics_partial_success(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{rejected_data_points => F@_1, error_message => F@_2}. -skip_varint_export_metrics_service_response(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> skip_varint_export_metrics_service_response(Rest, Z1, Z2, F, TrUserData); -skip_varint_export_metrics_service_response(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_export_metrics_service_response(Rest, Z1, Z2, F, TrUserData). +d_field_export_metrics_partial_success_rejected_data_points(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> + d_field_export_metrics_partial_success_rejected_data_points(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_export_metrics_partial_success_rejected_data_points(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = {begin <> = <<(X bsl N + Acc):64/unsigned-native>>, id(Res, TrUserData) end, Rest}, + dfp_read_field_def_export_metrics_partial_success(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_export_metrics_partial_success_error_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_export_metrics_partial_success_error_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_export_metrics_partial_success_error_message(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_export_metrics_partial_success(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). -skip_length_delimited_export_metrics_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 57 -> skip_length_delimited_export_metrics_service_response(Rest, N + 7, X bsl N + Acc, F, TrUserData); -skip_length_delimited_export_metrics_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) -> +skip_varint_export_metrics_partial_success(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_export_metrics_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_export_metrics_partial_success(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_metrics_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_export_metrics_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_export_metrics_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_export_metrics_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_export_metrics_service_response(Rest2, 0, 0, F, TrUserData). + dfp_read_field_def_export_metrics_partial_success(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). -skip_group_export_metrics_service_response(Bin, _, Z2, FNum, TrUserData) -> +skip_group_export_metrics_partial_success(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_export_metrics_service_response(Rest, 0, Z2, FNum, TrUserData). + dfp_read_field_def_export_metrics_partial_success(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). -skip_32_export_metrics_service_response(<<_:32, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_export_metrics_service_response(Rest, Z1, Z2, F, TrUserData). +skip_32_export_metrics_partial_success(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_metrics_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -skip_64_export_metrics_service_response(<<_:64, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_export_metrics_service_response(Rest, Z1, Z2, F, TrUserData). +skip_64_export_metrics_partial_success(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_metrics_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). decode_msg_metrics_data(Bin, TrUserData) -> dfp_read_field_def_metrics_data(Bin, 0, 0, 0, id([], TrUserData), TrUserData). @@ -1807,56 +1854,48 @@ skip_32_metrics_data(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_ skip_64_metrics_data(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_metrics_data(Rest, Z1, Z2, F, F@_1, TrUserData). -decode_msg_resource_metrics(Bin, TrUserData) -> dfp_read_field_def_resource_metrics(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). +decode_msg_resource_metrics(Bin, TrUserData) -> dfp_read_field_def_resource_metrics(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_resource_metrics(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_resource_metrics_resource(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_resource_metrics(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_resource_metrics_scope_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_resource_metrics(<<194, 62, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_resource_metrics_instrumentation_library_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_resource_metrics(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_resource_metrics_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_resource_metrics(<<>>, 0, 0, _, F@_1, R1, R2, F@_4, TrUserData) -> - S1 = #{schema_url => F@_4}, +dfp_read_field_def_resource_metrics(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_metrics_resource(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_metrics(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_metrics_scope_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_metrics(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_metrics_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_metrics(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> + S1 = #{schema_url => F@_3}, S2 = if F@_1 == '$undef' -> S1; true -> S1#{resource => F@_1} end, - S3 = if R1 == '$undef' -> S2; - true -> S2#{scope_metrics => lists_reverse(R1, TrUserData)} - end, - if R2 == '$undef' -> S3; - true -> S3#{instrumentation_library_metrics => lists_reverse(R2, TrUserData)} + if R1 == '$undef' -> S2; + true -> S2#{scope_metrics => lists_reverse(R1, TrUserData)} end; -dfp_read_field_def_resource_metrics(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_resource_metrics(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +dfp_read_field_def_resource_metrics(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_resource_metrics(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -dg_read_field_def_resource_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_resource_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dg_read_field_def_resource_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +dg_read_field_def_resource_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_resource_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_resource_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_resource_metrics_resource(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 18 -> d_field_resource_metrics_scope_metrics(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 8002 -> d_field_resource_metrics_instrumentation_library_metrics(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 26 -> d_field_resource_metrics_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 10 -> d_field_resource_metrics_resource(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_resource_metrics_scope_metrics(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_resource_metrics_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 1 -> skip_64_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 2 -> skip_length_delimited_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 3 -> skip_group_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 5 -> skip_32_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + 0 -> skip_varint_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_resource_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) end end; -dg_read_field_def_resource_metrics(<<>>, 0, 0, _, F@_1, R1, R2, F@_4, TrUserData) -> - S1 = #{schema_url => F@_4}, +dg_read_field_def_resource_metrics(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> + S1 = #{schema_url => F@_3}, S2 = if F@_1 == '$undef' -> S1; true -> S1#{resource => F@_1} end, - S3 = if R1 == '$undef' -> S2; - true -> S2#{scope_metrics => lists_reverse(R1, TrUserData)} - end, - if R2 == '$undef' -> S3; - true -> S3#{instrumentation_library_metrics => lists_reverse(R2, TrUserData)} + if R1 == '$undef' -> S2; + true -> S2#{scope_metrics => lists_reverse(R1, TrUserData)} end. -d_field_resource_metrics_resource(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_resource_metrics_resource(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_resource_metrics_resource(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, F@_4, TrUserData) -> +d_field_resource_metrics_resource(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_metrics_resource(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_metrics_resource(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_resource(Bs, TrUserData), TrUserData), Rest2} end, dfp_read_field_def_resource_metrics(RestF, 0, @@ -1867,41 +1906,34 @@ d_field_resource_metrics_resource(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@ end, F@_2, F@_3, - F@_4, TrUserData). -d_field_resource_metrics_scope_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_resource_metrics_scope_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_resource_metrics_scope_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, F@_4, TrUserData) -> +d_field_resource_metrics_scope_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_metrics_scope_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_metrics_scope_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_scope_metrics(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_resource_metrics(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, F@_4, TrUserData). + dfp_read_field_def_resource_metrics(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData). -d_field_resource_metrics_instrumentation_library_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> - d_field_resource_metrics_instrumentation_library_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_resource_metrics_instrumentation_library_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, F@_4, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_instrumentation_library_metrics(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_resource_metrics(RestF, 0, 0, F, F@_1, F@_2, cons(NewFValue, Prev, TrUserData), F@_4, TrUserData). - -d_field_resource_metrics_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_resource_metrics_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_resource_metrics_schema_url(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> +d_field_resource_metrics_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_metrics_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_metrics_schema_url(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_resource_metrics(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + dfp_read_field_def_resource_metrics(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). -skip_varint_resource_metrics(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_resource_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -skip_varint_resource_metrics(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_resource_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +skip_varint_resource_metrics(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_resource_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_resource_metrics(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -skip_length_delimited_resource_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_resource_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -skip_length_delimited_resource_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +skip_length_delimited_resource_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_resource_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_resource_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_resource_metrics(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + dfp_read_field_def_resource_metrics(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). -skip_group_resource_metrics(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +skip_group_resource_metrics(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_resource_metrics(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + dfp_read_field_def_resource_metrics(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). -skip_32_resource_metrics(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_resource_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +skip_32_resource_metrics(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -skip_64_resource_metrics(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_resource_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +skip_64_resource_metrics(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). decode_msg_scope_metrics(Bin, TrUserData) -> dfp_read_field_def_scope_metrics(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). @@ -1984,89 +2016,6 @@ skip_32_scope_metrics(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUser skip_64_scope_metrics(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_scope_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -decode_msg_instrumentation_library_metrics(Bin, TrUserData) -> dfp_read_field_def_instrumentation_library_metrics(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). - -dfp_read_field_def_instrumentation_library_metrics(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_instrumentation_library_metrics_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_instrumentation_library_metrics(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_instrumentation_library_metrics_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_instrumentation_library_metrics(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_instrumentation_library_metrics_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_instrumentation_library_metrics(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> - S1 = #{schema_url => F@_3}, - S2 = if F@_1 == '$undef' -> S1; - true -> S1#{instrumentation_library => F@_1} - end, - if R1 == '$undef' -> S2; - true -> S2#{metrics => lists_reverse(R1, TrUserData)} - end; -dfp_read_field_def_instrumentation_library_metrics(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_instrumentation_library_metrics(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - -dg_read_field_def_instrumentation_library_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_library_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -dg_read_field_def_instrumentation_library_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> - Key = X bsl N + Acc, - case Key of - 10 -> d_field_instrumentation_library_metrics_instrumentation_library(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 18 -> d_field_instrumentation_library_metrics_metrics(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 26 -> d_field_instrumentation_library_metrics_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_instrumentation_library_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 1 -> skip_64_instrumentation_library_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 2 -> skip_length_delimited_instrumentation_library_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 3 -> skip_group_instrumentation_library_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 5 -> skip_32_instrumentation_library_metrics(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) - end - end; -dg_read_field_def_instrumentation_library_metrics(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> - S1 = #{schema_url => F@_3}, - S2 = if F@_1 == '$undef' -> S1; - true -> S1#{instrumentation_library => F@_1} - end, - if R1 == '$undef' -> S2; - true -> S2#{metrics => lists_reverse(R1, TrUserData)} - end. - -d_field_instrumentation_library_metrics_instrumentation_library(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> - d_field_instrumentation_library_metrics_instrumentation_library(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_instrumentation_library_metrics_instrumentation_library(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_instrumentation_library(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library_metrics(RestF, - 0, - 0, - F, - if Prev == '$undef' -> NewFValue; - true -> merge_msg_instrumentation_library(Prev, NewFValue, TrUserData) - end, - F@_2, - F@_3, - TrUserData). - -d_field_instrumentation_library_metrics_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_instrumentation_library_metrics_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_instrumentation_library_metrics_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_metric(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library_metrics(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData). - -d_field_instrumentation_library_metrics_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_instrumentation_library_metrics_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_instrumentation_library_metrics_schema_url(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library_metrics(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). - -skip_varint_instrumentation_library_metrics(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_instrumentation_library_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -skip_varint_instrumentation_library_metrics(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_instrumentation_library_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - -skip_length_delimited_instrumentation_library_metrics(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> - skip_length_delimited_instrumentation_library_metrics(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -skip_length_delimited_instrumentation_library_metrics(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> - Length = X bsl N + Acc, - <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_instrumentation_library_metrics(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). - -skip_group_instrumentation_library_metrics(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_instrumentation_library_metrics(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). - -skip_32_instrumentation_library_metrics(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_instrumentation_library_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - -skip_64_instrumentation_library_metrics(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_instrumentation_library_metrics(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - decode_msg_metric(Bin, TrUserData) -> dfp_read_field_def_metric(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id('$undef', TrUserData), TrUserData). dfp_read_field_def_metric(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_metric_name(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); @@ -3714,107 +3663,79 @@ skip_32_key_value(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d skip_64_key_value(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -decode_msg_instrumentation_library(Bin, TrUserData) -> dfp_read_field_def_instrumentation_library(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). +decode_msg_instrumentation_scope(Bin, TrUserData) -> dfp_read_field_def_instrumentation_scope(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id([], TrUserData), id(0, TrUserData), TrUserData). -dfp_read_field_def_instrumentation_library(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_instrumentation_library_name(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_instrumentation_library(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_instrumentation_library_version(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_instrumentation_library(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{name => F@_1, version => F@_2}; -dfp_read_field_def_instrumentation_library(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_instrumentation_library(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). +dfp_read_field_def_instrumentation_scope(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_name(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_attributes(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_dropped_attributes_count(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, R1, F@_4, TrUserData) -> + S1 = #{name => F@_1, version => F@_2, dropped_attributes_count => F@_4}, + if R1 == '$undef' -> S1; + true -> S1#{attributes => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -dg_read_field_def_instrumentation_library(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_library(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_instrumentation_library(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> +dg_read_field_def_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_instrumentation_library_name(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 18 -> d_field_instrumentation_library_version(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 10 -> d_field_instrumentation_scope_name(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 18 -> d_field_instrumentation_scope_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 26 -> d_field_instrumentation_scope_attributes(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 32 -> d_field_instrumentation_scope_dropped_attributes_count(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + 0 -> skip_varint_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) end end; -dg_read_field_def_instrumentation_library(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{name => F@_1, version => F@_2}. +dg_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, R1, F@_4, TrUserData) -> + S1 = #{name => F@_1, version => F@_2, dropped_attributes_count => F@_4}, + if R1 == '$undef' -> S1; + true -> S1#{attributes => lists_reverse(R1, TrUserData)} + end. -d_field_instrumentation_library_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_instrumentation_library_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_instrumentation_library_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> +d_field_instrumentation_scope_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). -d_field_instrumentation_library_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_instrumentation_library_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_instrumentation_library_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> +d_field_instrumentation_scope_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). -skip_varint_instrumentation_library(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_instrumentation_library(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_length_delimited_instrumentation_library(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_instrumentation_library(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_instrumentation_library(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> - Length = X bsl N + Acc, - <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_instrumentation_library(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). - -skip_group_instrumentation_library(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_instrumentation_library(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). - -skip_32_instrumentation_library(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_64_instrumentation_library(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -decode_msg_instrumentation_scope(Bin, TrUserData) -> dfp_read_field_def_instrumentation_scope(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). - -dfp_read_field_def_instrumentation_scope(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_instrumentation_scope_name(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_instrumentation_scope(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_instrumentation_scope_version(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{name => F@_1, version => F@_2}; -dfp_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). - -dg_read_field_def_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> - Key = X bsl N + Acc, - case Key of - 10 -> d_field_instrumentation_scope_name(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 18 -> d_field_instrumentation_scope_version(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) - end - end; -dg_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{name => F@_1, version => F@_2}. - -d_field_instrumentation_scope_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_instrumentation_scope_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_instrumentation_scope_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). +d_field_instrumentation_scope_attributes(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_attributes(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_attributes(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, F@_4, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_key_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, F@_2, cons(NewFValue, Prev, TrUserData), F@_4, TrUserData). -d_field_instrumentation_scope_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_instrumentation_scope_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_instrumentation_scope_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). +d_field_instrumentation_scope_dropped_attributes_count(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> + d_field_instrumentation_scope_dropped_attributes_count(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_dropped_attributes_count(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). -skip_varint_instrumentation_scope(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_instrumentation_scope(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_varint_instrumentation_scope(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_instrumentation_scope(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_length_delimited_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> +skip_length_delimited_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_instrumentation_scope(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + dfp_read_field_def_instrumentation_scope(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_group_instrumentation_scope(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> +skip_group_instrumentation_scope(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_instrumentation_scope(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + dfp_read_field_def_instrumentation_scope(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_32_instrumentation_scope(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_32_instrumentation_scope(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_64_instrumentation_scope(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_64_instrumentation_scope(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). decode_msg_resource(Bin, TrUserData) -> dfp_read_field_def_resource(Bin, 0, 0, 0, id([], TrUserData), id(0, TrUserData), TrUserData). @@ -3945,10 +3866,10 @@ merge_msgs(Prev, New, MsgName, Opts) -> case MsgName of export_metrics_service_request -> merge_msg_export_metrics_service_request(Prev, New, TrUserData); export_metrics_service_response -> merge_msg_export_metrics_service_response(Prev, New, TrUserData); + export_metrics_partial_success -> merge_msg_export_metrics_partial_success(Prev, New, TrUserData); metrics_data -> merge_msg_metrics_data(Prev, New, TrUserData); resource_metrics -> merge_msg_resource_metrics(Prev, New, TrUserData); scope_metrics -> merge_msg_scope_metrics(Prev, New, TrUserData); - instrumentation_library_metrics -> merge_msg_instrumentation_library_metrics(Prev, New, TrUserData); metric -> merge_msg_metric(Prev, New, TrUserData); gauge -> merge_msg_gauge(Prev, New, TrUserData); sum -> merge_msg_sum(Prev, New, TrUserData); @@ -3966,7 +3887,6 @@ merge_msgs(Prev, New, MsgName, Opts) -> array_value -> merge_msg_array_value(Prev, New, TrUserData); key_value_list -> merge_msg_key_value_list(Prev, New, TrUserData); key_value -> merge_msg_key_value(Prev, New, TrUserData); - instrumentation_library -> merge_msg_instrumentation_library(Prev, New, TrUserData); instrumentation_scope -> merge_msg_instrumentation_scope(Prev, New, TrUserData); resource -> merge_msg_resource(Prev, New, TrUserData) end. @@ -3982,7 +3902,28 @@ merge_msg_export_metrics_service_request(PMsg, NMsg, TrUserData) -> end. -compile({nowarn_unused_function,merge_msg_export_metrics_service_response/3}). -merge_msg_export_metrics_service_response(_Prev, New, _TrUserData) -> New. +merge_msg_export_metrics_service_response(PMsg, NMsg, TrUserData) -> + S1 = #{}, + case {PMsg, NMsg} of + {#{partial_success := PFpartial_success}, #{partial_success := NFpartial_success}} -> S1#{partial_success => merge_msg_export_metrics_partial_success(PFpartial_success, NFpartial_success, TrUserData)}; + {_, #{partial_success := NFpartial_success}} -> S1#{partial_success => NFpartial_success}; + {#{partial_success := PFpartial_success}, _} -> S1#{partial_success => PFpartial_success}; + {_, _} -> S1 + end. + +-compile({nowarn_unused_function,merge_msg_export_metrics_partial_success/3}). +merge_msg_export_metrics_partial_success(PMsg, NMsg, _) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {_, #{rejected_data_points := NFrejected_data_points}} -> S1#{rejected_data_points => NFrejected_data_points}; + {#{rejected_data_points := PFrejected_data_points}, _} -> S1#{rejected_data_points => PFrejected_data_points}; + _ -> S1 + end, + case {PMsg, NMsg} of + {_, #{error_message := NFerror_message}} -> S2#{error_message => NFerror_message}; + {#{error_message := PFerror_message}, _} -> S2#{error_message => PFerror_message}; + _ -> S2 + end. -compile({nowarn_unused_function,merge_msg_metrics_data/3}). merge_msg_metrics_data(PMsg, NMsg, TrUserData) -> @@ -4009,17 +3950,10 @@ merge_msg_resource_metrics(PMsg, NMsg, TrUserData) -> {#{scope_metrics := PFscope_metrics}, _} -> S2#{scope_metrics => PFscope_metrics}; {_, _} -> S2 end, - S4 = case {PMsg, NMsg} of - {#{instrumentation_library_metrics := PFinstrumentation_library_metrics}, #{instrumentation_library_metrics := NFinstrumentation_library_metrics}} -> - S3#{instrumentation_library_metrics => 'erlang_++'(PFinstrumentation_library_metrics, NFinstrumentation_library_metrics, TrUserData)}; - {_, #{instrumentation_library_metrics := NFinstrumentation_library_metrics}} -> S3#{instrumentation_library_metrics => NFinstrumentation_library_metrics}; - {#{instrumentation_library_metrics := PFinstrumentation_library_metrics}, _} -> S3#{instrumentation_library_metrics => PFinstrumentation_library_metrics}; - {_, _} -> S3 - end, case {PMsg, NMsg} of - {_, #{schema_url := NFschema_url}} -> S4#{schema_url => NFschema_url}; - {#{schema_url := PFschema_url}, _} -> S4#{schema_url => PFschema_url}; - _ -> S4 + {_, #{schema_url := NFschema_url}} -> S3#{schema_url => NFschema_url}; + {#{schema_url := PFschema_url}, _} -> S3#{schema_url => PFschema_url}; + _ -> S3 end. -compile({nowarn_unused_function,merge_msg_scope_metrics/3}). @@ -4043,27 +3977,6 @@ merge_msg_scope_metrics(PMsg, NMsg, TrUserData) -> _ -> S3 end. --compile({nowarn_unused_function,merge_msg_instrumentation_library_metrics/3}). -merge_msg_instrumentation_library_metrics(PMsg, NMsg, TrUserData) -> - S1 = #{}, - S2 = case {PMsg, NMsg} of - {#{instrumentation_library := PFinstrumentation_library}, #{instrumentation_library := NFinstrumentation_library}} -> S1#{instrumentation_library => merge_msg_instrumentation_library(PFinstrumentation_library, NFinstrumentation_library, TrUserData)}; - {_, #{instrumentation_library := NFinstrumentation_library}} -> S1#{instrumentation_library => NFinstrumentation_library}; - {#{instrumentation_library := PFinstrumentation_library}, _} -> S1#{instrumentation_library => PFinstrumentation_library}; - {_, _} -> S1 - end, - S3 = case {PMsg, NMsg} of - {#{metrics := PFmetrics}, #{metrics := NFmetrics}} -> S2#{metrics => 'erlang_++'(PFmetrics, NFmetrics, TrUserData)}; - {_, #{metrics := NFmetrics}} -> S2#{metrics => NFmetrics}; - {#{metrics := PFmetrics}, _} -> S2#{metrics => PFmetrics}; - {_, _} -> S2 - end, - case {PMsg, NMsg} of - {_, #{schema_url := NFschema_url}} -> S3#{schema_url => NFschema_url}; - {#{schema_url := PFschema_url}, _} -> S3#{schema_url => PFschema_url}; - _ -> S3 - end. - -compile({nowarn_unused_function,merge_msg_metric/3}). merge_msg_metric(PMsg, NMsg, TrUserData) -> S1 = #{}, @@ -4481,32 +4394,29 @@ merge_msg_key_value(PMsg, NMsg, TrUserData) -> {_, _} -> S2 end. --compile({nowarn_unused_function,merge_msg_instrumentation_library/3}). -merge_msg_instrumentation_library(PMsg, NMsg, _) -> - S1 = #{}, - S2 = case {PMsg, NMsg} of - {_, #{name := NFname}} -> S1#{name => NFname}; - {#{name := PFname}, _} -> S1#{name => PFname}; - _ -> S1 - end, - case {PMsg, NMsg} of - {_, #{version := NFversion}} -> S2#{version => NFversion}; - {#{version := PFversion}, _} -> S2#{version => PFversion}; - _ -> S2 - end. - -compile({nowarn_unused_function,merge_msg_instrumentation_scope/3}). -merge_msg_instrumentation_scope(PMsg, NMsg, _) -> +merge_msg_instrumentation_scope(PMsg, NMsg, TrUserData) -> S1 = #{}, S2 = case {PMsg, NMsg} of {_, #{name := NFname}} -> S1#{name => NFname}; {#{name := PFname}, _} -> S1#{name => PFname}; _ -> S1 end, + S3 = case {PMsg, NMsg} of + {_, #{version := NFversion}} -> S2#{version => NFversion}; + {#{version := PFversion}, _} -> S2#{version => PFversion}; + _ -> S2 + end, + S4 = case {PMsg, NMsg} of + {#{attributes := PFattributes}, #{attributes := NFattributes}} -> S3#{attributes => 'erlang_++'(PFattributes, NFattributes, TrUserData)}; + {_, #{attributes := NFattributes}} -> S3#{attributes => NFattributes}; + {#{attributes := PFattributes}, _} -> S3#{attributes => PFattributes}; + {_, _} -> S3 + end, case {PMsg, NMsg} of - {_, #{version := NFversion}} -> S2#{version => NFversion}; - {#{version := PFversion}, _} -> S2#{version => PFversion}; - _ -> S2 + {_, #{dropped_attributes_count := NFdropped_attributes_count}} -> S4#{dropped_attributes_count => NFdropped_attributes_count}; + {#{dropped_attributes_count := PFdropped_attributes_count}, _} -> S4#{dropped_attributes_count => PFdropped_attributes_count}; + _ -> S4 end. -compile({nowarn_unused_function,merge_msg_resource/3}). @@ -4532,10 +4442,10 @@ verify_msg(Msg, MsgName, Opts) -> case MsgName of export_metrics_service_request -> v_msg_export_metrics_service_request(Msg, [MsgName], TrUserData); export_metrics_service_response -> v_msg_export_metrics_service_response(Msg, [MsgName], TrUserData); + export_metrics_partial_success -> v_msg_export_metrics_partial_success(Msg, [MsgName], TrUserData); metrics_data -> v_msg_metrics_data(Msg, [MsgName], TrUserData); resource_metrics -> v_msg_resource_metrics(Msg, [MsgName], TrUserData); scope_metrics -> v_msg_scope_metrics(Msg, [MsgName], TrUserData); - instrumentation_library_metrics -> v_msg_instrumentation_library_metrics(Msg, [MsgName], TrUserData); metric -> v_msg_metric(Msg, [MsgName], TrUserData); gauge -> v_msg_gauge(Msg, [MsgName], TrUserData); sum -> v_msg_sum(Msg, [MsgName], TrUserData); @@ -4553,7 +4463,6 @@ verify_msg(Msg, MsgName, Opts) -> array_value -> v_msg_array_value(Msg, [MsgName], TrUserData); key_value_list -> v_msg_key_value_list(Msg, [MsgName], TrUserData); key_value -> v_msg_key_value(Msg, [MsgName], TrUserData); - instrumentation_library -> v_msg_instrumentation_library(Msg, [MsgName], TrUserData); instrumentation_scope -> v_msg_instrumentation_scope(Msg, [MsgName], TrUserData); resource -> v_msg_resource(Msg, [MsgName], TrUserData); _ -> mk_type_error(not_a_known_message, Msg, []) @@ -4582,12 +4491,39 @@ v_msg_export_metrics_service_request(X, Path, _TrUserData) -> mk_type_error({exp -compile({nowarn_unused_function,v_msg_export_metrics_service_response/3}). -dialyzer({nowarn_function,v_msg_export_metrics_service_response/3}). -v_msg_export_metrics_service_response(#{} = M, Path, _) -> - lists:foreach(fun (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) end, maps:keys(M)), +v_msg_export_metrics_service_response(#{} = M, Path, TrUserData) -> + case M of + #{partial_success := F1} -> v_msg_export_metrics_partial_success(F1, [partial_success | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (partial_success) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), ok; v_msg_export_metrics_service_response(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), export_metrics_service_response}, M, Path); v_msg_export_metrics_service_response(X, Path, _TrUserData) -> mk_type_error({expected_msg, export_metrics_service_response}, X, Path). +-compile({nowarn_unused_function,v_msg_export_metrics_partial_success/3}). +-dialyzer({nowarn_function,v_msg_export_metrics_partial_success/3}). +v_msg_export_metrics_partial_success(#{} = M, Path, TrUserData) -> + case M of + #{rejected_data_points := F1} -> v_type_int64(F1, [rejected_data_points | Path], TrUserData); + _ -> ok + end, + case M of + #{error_message := F2} -> v_type_string(F2, [error_message | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (rejected_data_points) -> ok; + (error_message) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_export_metrics_partial_success(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), export_metrics_partial_success}, M, Path); +v_msg_export_metrics_partial_success(X, Path, _TrUserData) -> mk_type_error({expected_msg, export_metrics_partial_success}, X, Path). + -compile({nowarn_unused_function,v_msg_metrics_data/3}). -dialyzer({nowarn_function,v_msg_metrics_data/3}). v_msg_metrics_data(#{} = M, Path, TrUserData) -> @@ -4625,21 +4561,11 @@ v_msg_resource_metrics(#{} = M, Path, TrUserData) -> _ -> ok end, case M of - #{instrumentation_library_metrics := F3} -> - if is_list(F3) -> - _ = [v_msg_instrumentation_library_metrics(Elem, [instrumentation_library_metrics | Path], TrUserData) || Elem <- F3], - ok; - true -> mk_type_error({invalid_list_of, {msg, instrumentation_library_metrics}}, F3, [instrumentation_library_metrics | Path]) - end; - _ -> ok - end, - case M of - #{schema_url := F4} -> v_type_string(F4, [schema_url | Path], TrUserData); + #{schema_url := F3} -> v_type_string(F3, [schema_url | Path], TrUserData); _ -> ok end, lists:foreach(fun (resource) -> ok; (scope_metrics) -> ok; - (instrumentation_library_metrics) -> ok; (schema_url) -> ok; (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) end, @@ -4678,36 +4604,6 @@ v_msg_scope_metrics(#{} = M, Path, TrUserData) -> v_msg_scope_metrics(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), scope_metrics}, M, Path); v_msg_scope_metrics(X, Path, _TrUserData) -> mk_type_error({expected_msg, scope_metrics}, X, Path). --compile({nowarn_unused_function,v_msg_instrumentation_library_metrics/3}). --dialyzer({nowarn_function,v_msg_instrumentation_library_metrics/3}). -v_msg_instrumentation_library_metrics(#{} = M, Path, TrUserData) -> - case M of - #{instrumentation_library := F1} -> v_msg_instrumentation_library(F1, [instrumentation_library | Path], TrUserData); - _ -> ok - end, - case M of - #{metrics := F2} -> - if is_list(F2) -> - _ = [v_msg_metric(Elem, [metrics | Path], TrUserData) || Elem <- F2], - ok; - true -> mk_type_error({invalid_list_of, {msg, metric}}, F2, [metrics | Path]) - end; - _ -> ok - end, - case M of - #{schema_url := F3} -> v_type_string(F3, [schema_url | Path], TrUserData); - _ -> ok - end, - lists:foreach(fun (instrumentation_library) -> ok; - (metrics) -> ok; - (schema_url) -> ok; - (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) - end, - maps:keys(M)), - ok; -v_msg_instrumentation_library_metrics(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), instrumentation_library_metrics}, M, Path); -v_msg_instrumentation_library_metrics(X, Path, _TrUserData) -> mk_type_error({expected_msg, instrumentation_library_metrics}, X, Path). - -compile({nowarn_unused_function,v_msg_metric/3}). -dialyzer({nowarn_function,v_msg_metric/3}). v_msg_metric(#{} = M, Path, TrUserData) -> @@ -5309,9 +5205,9 @@ v_msg_key_value(#{} = M, Path, TrUserData) -> v_msg_key_value(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), key_value}, M, Path); v_msg_key_value(X, Path, _TrUserData) -> mk_type_error({expected_msg, key_value}, X, Path). --compile({nowarn_unused_function,v_msg_instrumentation_library/3}). --dialyzer({nowarn_function,v_msg_instrumentation_library/3}). -v_msg_instrumentation_library(#{} = M, Path, TrUserData) -> +-compile({nowarn_unused_function,v_msg_instrumentation_scope/3}). +-dialyzer({nowarn_function,v_msg_instrumentation_scope/3}). +v_msg_instrumentation_scope(#{} = M, Path, TrUserData) -> case M of #{name := F1} -> v_type_string(F1, [name | Path], TrUserData); _ -> ok @@ -5320,28 +5216,23 @@ v_msg_instrumentation_library(#{} = M, Path, TrUserData) -> #{version := F2} -> v_type_string(F2, [version | Path], TrUserData); _ -> ok end, - lists:foreach(fun (name) -> ok; - (version) -> ok; - (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) - end, - maps:keys(M)), - ok; -v_msg_instrumentation_library(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), instrumentation_library}, M, Path); -v_msg_instrumentation_library(X, Path, _TrUserData) -> mk_type_error({expected_msg, instrumentation_library}, X, Path). - --compile({nowarn_unused_function,v_msg_instrumentation_scope/3}). --dialyzer({nowarn_function,v_msg_instrumentation_scope/3}). -v_msg_instrumentation_scope(#{} = M, Path, TrUserData) -> case M of - #{name := F1} -> v_type_string(F1, [name | Path], TrUserData); + #{attributes := F3} -> + if is_list(F3) -> + _ = [v_msg_key_value(Elem, [attributes | Path], TrUserData) || Elem <- F3], + ok; + true -> mk_type_error({invalid_list_of, {msg, key_value}}, F3, [attributes | Path]) + end; _ -> ok end, case M of - #{version := F2} -> v_type_string(F2, [version | Path], TrUserData); + #{dropped_attributes_count := F4} -> v_type_uint32(F4, [dropped_attributes_count | Path], TrUserData); _ -> ok end, lists:foreach(fun (name) -> ok; (version) -> ok; + (attributes) -> ok; + (dropped_attributes_count) -> ok; (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) end, maps:keys(M)), @@ -5493,21 +5384,17 @@ get_msg_defs() -> [{{enum, 'opentelemetry.proto.metrics.v1.AggregationTemporality'}, [{'AGGREGATION_TEMPORALITY_UNSPECIFIED', 0, []}, {'AGGREGATION_TEMPORALITY_DELTA', 1, []}, {'AGGREGATION_TEMPORALITY_CUMULATIVE', 2, []}]}, {{enum, 'opentelemetry.proto.metrics.v1.DataPointFlags'}, [{'FLAG_NONE', 0, []}, {'FLAG_NO_RECORDED_VALUE', 1, []}]}, {{msg, export_metrics_service_request}, [#{name => resource_metrics, fnum => 1, rnum => 2, type => {msg, resource_metrics}, occurrence => repeated, opts => []}]}, - {{msg, export_metrics_service_response}, []}, + {{msg, export_metrics_service_response}, [#{name => partial_success, fnum => 1, rnum => 2, type => {msg, export_metrics_partial_success}, occurrence => defaulty, opts => []}]}, + {{msg, export_metrics_partial_success}, [#{name => rejected_data_points, fnum => 1, rnum => 2, type => int64, occurrence => defaulty, opts => []}, #{name => error_message, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}]}, {{msg, metrics_data}, [#{name => resource_metrics, fnum => 1, rnum => 2, type => {msg, resource_metrics}, occurrence => repeated, opts => []}]}, {{msg, resource_metrics}, [#{name => resource, fnum => 1, rnum => 2, type => {msg, resource}, occurrence => defaulty, opts => []}, #{name => scope_metrics, fnum => 2, rnum => 3, type => {msg, scope_metrics}, occurrence => repeated, opts => []}, - #{name => instrumentation_library_metrics, fnum => 1000, rnum => 4, type => {msg, instrumentation_library_metrics}, occurrence => repeated, opts => [deprecated]}, - #{name => schema_url, fnum => 3, rnum => 5, type => string, occurrence => defaulty, opts => []}]}, + #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => defaulty, opts => []}]}, {{msg, scope_metrics}, [#{name => scope, fnum => 1, rnum => 2, type => {msg, instrumentation_scope}, occurrence => defaulty, opts => []}, #{name => metrics, fnum => 2, rnum => 3, type => {msg, metric}, occurrence => repeated, opts => []}, #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => defaulty, opts => []}]}, - {{msg, instrumentation_library_metrics}, - [#{name => instrumentation_library, fnum => 1, rnum => 2, type => {msg, instrumentation_library}, occurrence => defaulty, opts => []}, - #{name => metrics, fnum => 2, rnum => 3, type => {msg, metric}, occurrence => repeated, opts => []}, - #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => defaulty, opts => []}]}, {{msg, metric}, [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, #{name => description, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}, @@ -5595,18 +5482,21 @@ get_msg_defs() -> {{msg, array_value}, [#{name => values, fnum => 1, rnum => 2, type => {msg, any_value}, occurrence => repeated, opts => []}]}, {{msg, key_value_list}, [#{name => values, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}]}, {{msg, key_value}, [#{name => key, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, #{name => value, fnum => 2, rnum => 3, type => {msg, any_value}, occurrence => defaulty, opts => []}]}, - {{msg, instrumentation_library}, [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, #{name => version, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}]}, - {{msg, instrumentation_scope}, [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, #{name => version, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}]}, + {{msg, instrumentation_scope}, + [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, + #{name => version, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}, + #{name => attributes, fnum => 3, rnum => 4, type => {msg, key_value}, occurrence => repeated, opts => []}, + #{name => dropped_attributes_count, fnum => 4, rnum => 5, type => uint32, occurrence => defaulty, opts => []}]}, {{msg, resource}, [#{name => attributes, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}, #{name => dropped_attributes_count, fnum => 2, rnum => 3, type => uint32, occurrence => defaulty, opts => []}]}]. get_msg_names() -> [export_metrics_service_request, export_metrics_service_response, + export_metrics_partial_success, metrics_data, resource_metrics, scope_metrics, - instrumentation_library_metrics, metric, gauge, sum, @@ -5624,7 +5514,6 @@ get_msg_names() -> array_value, key_value_list, key_value, - instrumentation_library, instrumentation_scope, resource]. @@ -5635,10 +5524,10 @@ get_group_names() -> []. get_msg_or_group_names() -> [export_metrics_service_request, export_metrics_service_response, + export_metrics_partial_success, metrics_data, resource_metrics, scope_metrics, - instrumentation_library_metrics, metric, gauge, sum, @@ -5656,7 +5545,6 @@ get_msg_or_group_names() -> array_value, key_value_list, key_value, - instrumentation_library, instrumentation_scope, resource]. @@ -5679,21 +5567,18 @@ fetch_enum_def(EnumName) -> find_msg_def(export_metrics_service_request) -> [#{name => resource_metrics, fnum => 1, rnum => 2, type => {msg, resource_metrics}, occurrence => repeated, opts => []}]; -find_msg_def(export_metrics_service_response) -> []; +find_msg_def(export_metrics_service_response) -> [#{name => partial_success, fnum => 1, rnum => 2, type => {msg, export_metrics_partial_success}, occurrence => defaulty, opts => []}]; +find_msg_def(export_metrics_partial_success) -> + [#{name => rejected_data_points, fnum => 1, rnum => 2, type => int64, occurrence => defaulty, opts => []}, #{name => error_message, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}]; find_msg_def(metrics_data) -> [#{name => resource_metrics, fnum => 1, rnum => 2, type => {msg, resource_metrics}, occurrence => repeated, opts => []}]; find_msg_def(resource_metrics) -> [#{name => resource, fnum => 1, rnum => 2, type => {msg, resource}, occurrence => defaulty, opts => []}, #{name => scope_metrics, fnum => 2, rnum => 3, type => {msg, scope_metrics}, occurrence => repeated, opts => []}, - #{name => instrumentation_library_metrics, fnum => 1000, rnum => 4, type => {msg, instrumentation_library_metrics}, occurrence => repeated, opts => [deprecated]}, - #{name => schema_url, fnum => 3, rnum => 5, type => string, occurrence => defaulty, opts => []}]; + #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => defaulty, opts => []}]; find_msg_def(scope_metrics) -> [#{name => scope, fnum => 1, rnum => 2, type => {msg, instrumentation_scope}, occurrence => defaulty, opts => []}, #{name => metrics, fnum => 2, rnum => 3, type => {msg, metric}, occurrence => repeated, opts => []}, #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => defaulty, opts => []}]; -find_msg_def(instrumentation_library_metrics) -> - [#{name => instrumentation_library, fnum => 1, rnum => 2, type => {msg, instrumentation_library}, occurrence => defaulty, opts => []}, - #{name => metrics, fnum => 2, rnum => 3, type => {msg, metric}, occurrence => repeated, opts => []}, - #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => defaulty, opts => []}]; find_msg_def(metric) -> [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, #{name => description, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}, @@ -5781,8 +5666,11 @@ find_msg_def(any_value) -> find_msg_def(array_value) -> [#{name => values, fnum => 1, rnum => 2, type => {msg, any_value}, occurrence => repeated, opts => []}]; find_msg_def(key_value_list) -> [#{name => values, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}]; find_msg_def(key_value) -> [#{name => key, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, #{name => value, fnum => 2, rnum => 3, type => {msg, any_value}, occurrence => defaulty, opts => []}]; -find_msg_def(instrumentation_library) -> [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, #{name => version, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}]; -find_msg_def(instrumentation_scope) -> [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, #{name => version, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}]; +find_msg_def(instrumentation_scope) -> + [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => defaulty, opts => []}, + #{name => version, fnum => 2, rnum => 3, type => string, occurrence => defaulty, opts => []}, + #{name => attributes, fnum => 3, rnum => 4, type => {msg, key_value}, occurrence => repeated, opts => []}, + #{name => dropped_attributes_count, fnum => 4, rnum => 5, type => uint32, occurrence => defaulty, opts => []}]; find_msg_def(resource) -> [#{name => attributes, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}, #{name => dropped_attributes_count, fnum => 2, rnum => 3, type => uint32, occurrence => defaulty, opts => []}]; find_msg_def(_) -> error. @@ -5872,10 +5760,10 @@ service_and_rpc_name_to_fqbins(S, R) -> error({gpb_error, {badservice_or_rpc, {S fqbin_to_msg_name(<<"opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest">>) -> export_metrics_service_request; fqbin_to_msg_name(<<"opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse">>) -> export_metrics_service_response; +fqbin_to_msg_name(<<"opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess">>) -> export_metrics_partial_success; fqbin_to_msg_name(<<"opentelemetry.proto.metrics.v1.MetricsData">>) -> metrics_data; fqbin_to_msg_name(<<"opentelemetry.proto.metrics.v1.ResourceMetrics">>) -> resource_metrics; fqbin_to_msg_name(<<"opentelemetry.proto.metrics.v1.ScopeMetrics">>) -> scope_metrics; -fqbin_to_msg_name(<<"opentelemetry.proto.metrics.v1.InstrumentationLibraryMetrics">>) -> instrumentation_library_metrics; fqbin_to_msg_name(<<"opentelemetry.proto.metrics.v1.Metric">>) -> metric; fqbin_to_msg_name(<<"opentelemetry.proto.metrics.v1.Gauge">>) -> gauge; fqbin_to_msg_name(<<"opentelemetry.proto.metrics.v1.Sum">>) -> sum; @@ -5893,7 +5781,6 @@ fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.AnyValue">>) -> any_value; fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.ArrayValue">>) -> array_value; fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.KeyValueList">>) -> key_value_list; fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.KeyValue">>) -> key_value; -fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.InstrumentationLibrary">>) -> instrumentation_library; fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.InstrumentationScope">>) -> instrumentation_scope; fqbin_to_msg_name(<<"opentelemetry.proto.resource.v1.Resource">>) -> resource; fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}). @@ -5901,10 +5788,10 @@ fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}). msg_name_to_fqbin(export_metrics_service_request) -> <<"opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest">>; msg_name_to_fqbin(export_metrics_service_response) -> <<"opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse">>; +msg_name_to_fqbin(export_metrics_partial_success) -> <<"opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess">>; msg_name_to_fqbin(metrics_data) -> <<"opentelemetry.proto.metrics.v1.MetricsData">>; msg_name_to_fqbin(resource_metrics) -> <<"opentelemetry.proto.metrics.v1.ResourceMetrics">>; msg_name_to_fqbin(scope_metrics) -> <<"opentelemetry.proto.metrics.v1.ScopeMetrics">>; -msg_name_to_fqbin(instrumentation_library_metrics) -> <<"opentelemetry.proto.metrics.v1.InstrumentationLibraryMetrics">>; msg_name_to_fqbin(metric) -> <<"opentelemetry.proto.metrics.v1.Metric">>; msg_name_to_fqbin(gauge) -> <<"opentelemetry.proto.metrics.v1.Gauge">>; msg_name_to_fqbin(sum) -> <<"opentelemetry.proto.metrics.v1.Sum">>; @@ -5922,7 +5809,6 @@ msg_name_to_fqbin(any_value) -> <<"opentelemetry.proto.common.v1.AnyValue">>; msg_name_to_fqbin(array_value) -> <<"opentelemetry.proto.common.v1.ArrayValue">>; msg_name_to_fqbin(key_value_list) -> <<"opentelemetry.proto.common.v1.KeyValueList">>; msg_name_to_fqbin(key_value) -> <<"opentelemetry.proto.common.v1.KeyValue">>; -msg_name_to_fqbin(instrumentation_library) -> <<"opentelemetry.proto.common.v1.InstrumentationLibrary">>; msg_name_to_fqbin(instrumentation_scope) -> <<"opentelemetry.proto.common.v1.InstrumentationScope">>; msg_name_to_fqbin(resource) -> <<"opentelemetry.proto.resource.v1.Resource">>; msg_name_to_fqbin(E) -> error({gpb_error, {badmsg, E}}). @@ -5965,26 +5851,10 @@ get_all_source_basenames() -> ["metrics_service.proto", "metrics.proto", "common get_all_proto_names() -> ["metrics_service", "metrics", "common", "resource"]. -get_msg_containment("metrics_service") -> [export_metrics_service_request, export_metrics_service_response]; +get_msg_containment("metrics_service") -> [export_metrics_partial_success, export_metrics_service_request, export_metrics_service_response]; get_msg_containment("metrics") -> - [exemplar, - exponential_histogram, - exponential_histogram_data_point, - buckets, - gauge, - histogram, - histogram_data_point, - instrumentation_library_metrics, - metric, - metrics_data, - number_data_point, - resource_metrics, - scope_metrics, - sum, - summary, - summary_data_point, - value_at_quantile]; -get_msg_containment("common") -> [any_value, array_value, instrumentation_library, instrumentation_scope, key_value, key_value_list]; + [exemplar, exponential_histogram, exponential_histogram_data_point, buckets, gauge, histogram, histogram_data_point, metric, metrics_data, number_data_point, resource_metrics, scope_metrics, sum, summary, summary_data_point, value_at_quantile]; +get_msg_containment("common") -> [any_value, array_value, instrumentation_scope, key_value, key_value_list]; get_msg_containment("resource") -> [resource]; get_msg_containment(P) -> error({gpb_error, {badproto, P}}). @@ -6022,8 +5892,8 @@ get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.Exemplar">>) -> get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.ScopeMetrics">>) -> "metrics"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.ResourceMetrics">>) -> "metrics"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.Metric">>) -> "metrics"; -get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.InstrumentationLibraryMetrics">>) -> "metrics"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets">>) -> "metrics"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess">>) -> "metrics_service"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.KeyValueList">>) -> "common"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.SummaryDataPoint">>) -> "metrics"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.NumberDataPoint">>) -> "metrics"; @@ -6038,7 +5908,6 @@ get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.AnyValue">>) -> get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile">>) -> "metrics"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.Gauge">>) -> "metrics"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse">>) -> "metrics_service"; -get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.InstrumentationLibrary">>) -> "common"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.Summary">>) -> "metrics"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.Sum">>) -> "metrics"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.metrics.v1.Histogram">>) -> "metrics"; diff --git a/apps/opentelemetry_exporter/src/opentelemetry_exporter_trace_service_pb.erl b/apps/opentelemetry_exporter/src/opentelemetry_exporter_trace_service_pb.erl index c124ceb7..c2ee7df3 100644 --- a/apps/opentelemetry_exporter/src/opentelemetry_exporter_trace_service_pb.erl +++ b/apps/opentelemetry_exporter/src/opentelemetry_exporter_trace_service_pb.erl @@ -60,7 +60,12 @@ }. -type export_trace_service_response() :: - #{ + #{partial_success => export_trace_partial_success() % = 1, optional + }. + +-type export_trace_partial_success() :: + #{rejected_spans => integer(), % = 1, optional, 64 bits + error_message => unicode:chardata() % = 2, optional }. -type traces_data() :: @@ -70,7 +75,6 @@ -type resource_spans() :: #{resource => resource(), % = 1, optional scope_spans => [scope_spans()], % = 2, repeated - instrumentation_library_spans => [instrumentation_library_spans()], % = 1000, repeated schema_url => unicode:chardata() % = 3, optional }. @@ -80,12 +84,6 @@ schema_url => unicode:chardata() % = 3, optional }. --type instrumentation_library_spans() :: - #{instrumentation_library => instrumentation_library(), % = 1, optional - spans => [span()], % = 2, repeated - schema_url => unicode:chardata() % = 3, optional - }. - -type event() :: #{time_unix_nano => non_neg_integer(), % = 1, optional, 64 bits name => unicode:chardata(), % = 2, optional @@ -141,14 +139,11 @@ value => any_value() % = 2, optional }. --type instrumentation_library() :: - #{name => unicode:chardata(), % = 1, optional - version => unicode:chardata() % = 2, optional - }. - -type instrumentation_scope() :: #{name => unicode:chardata(), % = 1, optional - version => unicode:chardata() % = 2, optional + version => unicode:chardata(), % = 2, optional + attributes => [key_value()], % = 3, repeated + dropped_attributes_count => non_neg_integer() % = 4, optional, 32 bits }. -type resource() :: @@ -156,9 +151,9 @@ dropped_attributes_count => non_neg_integer() % = 2, optional, 32 bits }. --export_type(['export_trace_service_request'/0, 'export_trace_service_response'/0, 'traces_data'/0, 'resource_spans'/0, 'scope_spans'/0, 'instrumentation_library_spans'/0, 'event'/0, 'link'/0, 'span'/0, 'status'/0, 'any_value'/0, 'array_value'/0, 'key_value_list'/0, 'key_value'/0, 'instrumentation_library'/0, 'instrumentation_scope'/0, 'resource'/0]). --type '$msg_name'() :: export_trace_service_request | export_trace_service_response | traces_data | resource_spans | scope_spans | instrumentation_library_spans | event | link | span | status | any_value | array_value | key_value_list | key_value | instrumentation_library | instrumentation_scope | resource. --type '$msg'() :: export_trace_service_request() | export_trace_service_response() | traces_data() | resource_spans() | scope_spans() | instrumentation_library_spans() | event() | link() | span() | status() | any_value() | array_value() | key_value_list() | key_value() | instrumentation_library() | instrumentation_scope() | resource(). +-export_type(['export_trace_service_request'/0, 'export_trace_service_response'/0, 'export_trace_partial_success'/0, 'traces_data'/0, 'resource_spans'/0, 'scope_spans'/0, 'event'/0, 'link'/0, 'span'/0, 'status'/0, 'any_value'/0, 'array_value'/0, 'key_value_list'/0, 'key_value'/0, 'instrumentation_scope'/0, 'resource'/0]). +-type '$msg_name'() :: export_trace_service_request | export_trace_service_response | export_trace_partial_success | traces_data | resource_spans | scope_spans | event | link | span | status | any_value | array_value | key_value_list | key_value | instrumentation_scope | resource. +-type '$msg'() :: export_trace_service_request() | export_trace_service_response() | export_trace_partial_success() | traces_data() | resource_spans() | scope_spans() | event() | link() | span() | status() | any_value() | array_value() | key_value_list() | key_value() | instrumentation_scope() | resource(). -export_type(['$msg_name'/0, '$msg'/0]). -if(?OTP_RELEASE >= 24). @@ -180,10 +175,10 @@ encode_msg(Msg, MsgName, Opts) -> case MsgName of export_trace_service_request -> encode_msg_export_trace_service_request(id(Msg, TrUserData), TrUserData); export_trace_service_response -> encode_msg_export_trace_service_response(id(Msg, TrUserData), TrUserData); + export_trace_partial_success -> encode_msg_export_trace_partial_success(id(Msg, TrUserData), TrUserData); traces_data -> encode_msg_traces_data(id(Msg, TrUserData), TrUserData); resource_spans -> encode_msg_resource_spans(id(Msg, TrUserData), TrUserData); scope_spans -> encode_msg_scope_spans(id(Msg, TrUserData), TrUserData); - instrumentation_library_spans -> encode_msg_instrumentation_library_spans(id(Msg, TrUserData), TrUserData); event -> encode_msg_event(id(Msg, TrUserData), TrUserData); link -> encode_msg_link(id(Msg, TrUserData), TrUserData); span -> encode_msg_span(id(Msg, TrUserData), TrUserData); @@ -192,7 +187,6 @@ encode_msg(Msg, MsgName, Opts) -> array_value -> encode_msg_array_value(id(Msg, TrUserData), TrUserData); key_value_list -> encode_msg_key_value_list(id(Msg, TrUserData), TrUserData); key_value -> encode_msg_key_value(id(Msg, TrUserData), TrUserData); - instrumentation_library -> encode_msg_instrumentation_library(id(Msg, TrUserData), TrUserData); instrumentation_scope -> encode_msg_instrumentation_scope(id(Msg, TrUserData), TrUserData); resource -> encode_msg_resource(id(Msg, TrUserData), TrUserData) end. @@ -211,82 +205,79 @@ encode_msg_export_trace_service_request(#{} = M, Bin, TrUserData) -> _ -> Bin end. -encode_msg_export_trace_service_response(_Msg, _TrUserData) -> <<>>. - -encode_msg_traces_data(Msg, TrUserData) -> encode_msg_traces_data(Msg, <<>>, TrUserData). +encode_msg_export_trace_service_response(Msg, TrUserData) -> encode_msg_export_trace_service_response(Msg, <<>>, TrUserData). -encode_msg_traces_data(#{} = M, Bin, TrUserData) -> +encode_msg_export_trace_service_response(#{} = M, Bin, TrUserData) -> case M of - #{resource_spans := F1} -> - TrF1 = id(F1, TrUserData), - if TrF1 == [] -> Bin; - true -> e_field_traces_data_resource_spans(TrF1, Bin, TrUserData) + #{partial_success := F1} -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> e_mfield_export_trace_service_response_partial_success(TrF1, <>, TrUserData) + end end; _ -> Bin end. -encode_msg_resource_spans(Msg, TrUserData) -> encode_msg_resource_spans(Msg, <<>>, TrUserData). +encode_msg_export_trace_partial_success(Msg, TrUserData) -> encode_msg_export_trace_partial_success(Msg, <<>>, TrUserData). -encode_msg_resource_spans(#{} = M, Bin, TrUserData) -> +encode_msg_export_trace_partial_success(#{} = M, Bin, TrUserData) -> B1 = case M of - #{resource := F1} -> + #{rejected_spans := F1} -> begin TrF1 = id(F1, TrUserData), - if TrF1 =:= undefined -> Bin; - true -> e_mfield_resource_spans_resource(TrF1, <>, TrUserData) + if TrF1 =:= 0 -> Bin; + true -> e_type_int64(TrF1, <>, TrUserData) end end; _ -> Bin end, - B2 = case M of - #{scope_spans := F2} -> - TrF2 = id(F2, TrUserData), - if TrF2 == [] -> B1; - true -> e_field_resource_spans_scope_spans(TrF2, B1, TrUserData) - end; - _ -> B1 - end, - B3 = case M of - #{instrumentation_library_spans := F3} -> - TrF3 = id(F3, TrUserData), - if TrF3 == [] -> B2; - true -> e_field_resource_spans_instrumentation_library_spans(TrF3, B2, TrUserData) - end; - _ -> B2 - end, case M of - #{schema_url := F4} -> + #{error_message := F2} -> begin - TrF4 = id(F4, TrUserData), - case is_empty_string(TrF4) of - true -> B3; - false -> e_type_string(TrF4, <>, TrUserData) + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) end end; - _ -> B3 + _ -> B1 end. -encode_msg_scope_spans(Msg, TrUserData) -> encode_msg_scope_spans(Msg, <<>>, TrUserData). +encode_msg_traces_data(Msg, TrUserData) -> encode_msg_traces_data(Msg, <<>>, TrUserData). -encode_msg_scope_spans(#{} = M, Bin, TrUserData) -> +encode_msg_traces_data(#{} = M, Bin, TrUserData) -> + case M of + #{resource_spans := F1} -> + TrF1 = id(F1, TrUserData), + if TrF1 == [] -> Bin; + true -> e_field_traces_data_resource_spans(TrF1, Bin, TrUserData) + end; + _ -> Bin + end. + +encode_msg_resource_spans(Msg, TrUserData) -> encode_msg_resource_spans(Msg, <<>>, TrUserData). + + +encode_msg_resource_spans(#{} = M, Bin, TrUserData) -> B1 = case M of - #{scope := F1} -> + #{resource := F1} -> begin TrF1 = id(F1, TrUserData), if TrF1 =:= undefined -> Bin; - true -> e_mfield_scope_spans_scope(TrF1, <>, TrUserData) + true -> e_mfield_resource_spans_resource(TrF1, <>, TrUserData) end end; _ -> Bin end, B2 = case M of - #{spans := F2} -> + #{scope_spans := F2} -> TrF2 = id(F2, TrUserData), if TrF2 == [] -> B1; - true -> e_field_scope_spans_spans(TrF2, B1, TrUserData) + true -> e_field_resource_spans_scope_spans(TrF2, B1, TrUserData) end; _ -> B1 end, @@ -302,16 +293,16 @@ encode_msg_scope_spans(#{} = M, Bin, TrUserData) -> _ -> B2 end. -encode_msg_instrumentation_library_spans(Msg, TrUserData) -> encode_msg_instrumentation_library_spans(Msg, <<>>, TrUserData). +encode_msg_scope_spans(Msg, TrUserData) -> encode_msg_scope_spans(Msg, <<>>, TrUserData). -encode_msg_instrumentation_library_spans(#{} = M, Bin, TrUserData) -> +encode_msg_scope_spans(#{} = M, Bin, TrUserData) -> B1 = case M of - #{instrumentation_library := F1} -> + #{scope := F1} -> begin TrF1 = id(F1, TrUserData), if TrF1 =:= undefined -> Bin; - true -> e_mfield_instrumentation_library_spans_instrumentation_library(TrF1, <>, TrUserData) + true -> e_mfield_scope_spans_scope(TrF1, <>, TrUserData) end end; _ -> Bin @@ -320,7 +311,7 @@ encode_msg_instrumentation_library_spans(#{} = M, Bin, TrUserData) -> #{spans := F2} -> TrF2 = id(F2, TrUserData), if TrF2 == [] -> B1; - true -> e_field_instrumentation_library_spans_spans(TrF2, B1, TrUserData) + true -> e_field_scope_spans_spans(TrF2, B1, TrUserData) end; _ -> B1 end, @@ -686,10 +677,10 @@ encode_msg_key_value(#{} = M, Bin, TrUserData) -> _ -> B1 end. -encode_msg_instrumentation_library(Msg, TrUserData) -> encode_msg_instrumentation_library(Msg, <<>>, TrUserData). +encode_msg_instrumentation_scope(Msg, TrUserData) -> encode_msg_instrumentation_scope(Msg, <<>>, TrUserData). -encode_msg_instrumentation_library(#{} = M, Bin, TrUserData) -> +encode_msg_instrumentation_scope(#{} = M, Bin, TrUserData) -> B1 = case M of #{name := F1} -> begin @@ -701,43 +692,34 @@ encode_msg_instrumentation_library(#{} = M, Bin, TrUserData) -> end; _ -> Bin end, - case M of - #{version := F2} -> - begin - TrF2 = id(F2, TrUserData), - case is_empty_string(TrF2) of - true -> B1; - false -> e_type_string(TrF2, <>, TrUserData) - end - end; - _ -> B1 - end. - -encode_msg_instrumentation_scope(Msg, TrUserData) -> encode_msg_instrumentation_scope(Msg, <<>>, TrUserData). - - -encode_msg_instrumentation_scope(#{} = M, Bin, TrUserData) -> - B1 = case M of - #{name := F1} -> + B2 = case M of + #{version := F2} -> begin - TrF1 = id(F1, TrUserData), - case is_empty_string(TrF1) of - true -> Bin; - false -> e_type_string(TrF1, <>, TrUserData) + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) end end; - _ -> Bin + _ -> B1 + end, + B3 = case M of + #{attributes := F3} -> + TrF3 = id(F3, TrUserData), + if TrF3 == [] -> B2; + true -> e_field_instrumentation_scope_attributes(TrF3, B2, TrUserData) + end; + _ -> B2 end, case M of - #{version := F2} -> + #{dropped_attributes_count := F4} -> begin - TrF2 = id(F2, TrUserData), - case is_empty_string(TrF2) of - true -> B1; - false -> e_type_string(TrF2, <>, TrUserData) + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) end end; - _ -> B1 + _ -> B3 end. encode_msg_resource(Msg, TrUserData) -> encode_msg_resource(Msg, <<>>, TrUserData). @@ -774,6 +756,11 @@ e_field_export_trace_service_request_resource_spans([Elem | Rest], Bin, TrUserDa e_field_export_trace_service_request_resource_spans(Rest, Bin3, TrUserData); e_field_export_trace_service_request_resource_spans([], Bin, _TrUserData) -> Bin. +e_mfield_export_trace_service_response_partial_success(Msg, Bin, TrUserData) -> + SubBin = encode_msg_export_trace_partial_success(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + e_mfield_traces_data_resource_spans(Msg, Bin, TrUserData) -> SubBin = encode_msg_resource_spans(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -801,17 +788,6 @@ e_field_resource_spans_scope_spans([Elem | Rest], Bin, TrUserData) -> e_field_resource_spans_scope_spans(Rest, Bin3, TrUserData); e_field_resource_spans_scope_spans([], Bin, _TrUserData) -> Bin. -e_mfield_resource_spans_instrumentation_library_spans(Msg, Bin, TrUserData) -> - SubBin = encode_msg_instrumentation_library_spans(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - -e_field_resource_spans_instrumentation_library_spans([Elem | Rest], Bin, TrUserData) -> - Bin2 = <>, - Bin3 = e_mfield_resource_spans_instrumentation_library_spans(id(Elem, TrUserData), Bin2, TrUserData), - e_field_resource_spans_instrumentation_library_spans(Rest, Bin3, TrUserData); -e_field_resource_spans_instrumentation_library_spans([], Bin, _TrUserData) -> Bin. - e_mfield_scope_spans_scope(Msg, Bin, TrUserData) -> SubBin = encode_msg_instrumentation_scope(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -828,22 +804,6 @@ e_field_scope_spans_spans([Elem | Rest], Bin, TrUserData) -> e_field_scope_spans_spans(Rest, Bin3, TrUserData); e_field_scope_spans_spans([], Bin, _TrUserData) -> Bin. -e_mfield_instrumentation_library_spans_instrumentation_library(Msg, Bin, TrUserData) -> - SubBin = encode_msg_instrumentation_library(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - -e_mfield_instrumentation_library_spans_spans(Msg, Bin, TrUserData) -> - SubBin = encode_msg_span(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - -e_field_instrumentation_library_spans_spans([Elem | Rest], Bin, TrUserData) -> - Bin2 = <>, - Bin3 = e_mfield_instrumentation_library_spans_spans(id(Elem, TrUserData), Bin2, TrUserData), - e_field_instrumentation_library_spans_spans(Rest, Bin3, TrUserData); -e_field_instrumentation_library_spans_spans([], Bin, _TrUserData) -> Bin. - e_mfield_event_attributes(Msg, Bin, TrUserData) -> SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -941,6 +901,17 @@ e_mfield_key_value_value(Msg, Bin, TrUserData) -> Bin2 = e_varint(byte_size(SubBin), Bin), <>. +e_mfield_instrumentation_scope_attributes(Msg, Bin, TrUserData) -> + SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_instrumentation_scope_attributes([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_instrumentation_scope_attributes(id(Elem, TrUserData), Bin2, TrUserData), + e_field_instrumentation_scope_attributes(Rest, Bin3, TrUserData); +e_field_instrumentation_scope_attributes([], Bin, _TrUserData) -> Bin. + e_mfield_resource_attributes(Msg, Bin, TrUserData) -> SubBin = encode_msg_key_value(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -1105,10 +1076,10 @@ decode_msg_1_catch(Bin, MsgName, TrUserData) -> decode_msg_2_doit(export_trace_service_request, Bin, TrUserData) -> id(decode_msg_export_trace_service_request(Bin, TrUserData), TrUserData); decode_msg_2_doit(export_trace_service_response, Bin, TrUserData) -> id(decode_msg_export_trace_service_response(Bin, TrUserData), TrUserData); +decode_msg_2_doit(export_trace_partial_success, Bin, TrUserData) -> id(decode_msg_export_trace_partial_success(Bin, TrUserData), TrUserData); decode_msg_2_doit(traces_data, Bin, TrUserData) -> id(decode_msg_traces_data(Bin, TrUserData), TrUserData); decode_msg_2_doit(resource_spans, Bin, TrUserData) -> id(decode_msg_resource_spans(Bin, TrUserData), TrUserData); decode_msg_2_doit(scope_spans, Bin, TrUserData) -> id(decode_msg_scope_spans(Bin, TrUserData), TrUserData); -decode_msg_2_doit(instrumentation_library_spans, Bin, TrUserData) -> id(decode_msg_instrumentation_library_spans(Bin, TrUserData), TrUserData); decode_msg_2_doit(event, Bin, TrUserData) -> id(decode_msg_event(Bin, TrUserData), TrUserData); decode_msg_2_doit(link, Bin, TrUserData) -> id(decode_msg_link(Bin, TrUserData), TrUserData); decode_msg_2_doit(span, Bin, TrUserData) -> id(decode_msg_span(Bin, TrUserData), TrUserData); @@ -1117,7 +1088,6 @@ decode_msg_2_doit(any_value, Bin, TrUserData) -> id(decode_msg_any_value(Bin, Tr decode_msg_2_doit(array_value, Bin, TrUserData) -> id(decode_msg_array_value(Bin, TrUserData), TrUserData); decode_msg_2_doit(key_value_list, Bin, TrUserData) -> id(decode_msg_key_value_list(Bin, TrUserData), TrUserData); decode_msg_2_doit(key_value, Bin, TrUserData) -> id(decode_msg_key_value(Bin, TrUserData), TrUserData); -decode_msg_2_doit(instrumentation_library, Bin, TrUserData) -> id(decode_msg_instrumentation_library(Bin, TrUserData), TrUserData); decode_msg_2_doit(instrumentation_scope, Bin, TrUserData) -> id(decode_msg_instrumentation_scope(Bin, TrUserData), TrUserData); decode_msg_2_doit(resource, Bin, TrUserData) -> id(decode_msg_resource(Bin, TrUserData), TrUserData). @@ -1175,39 +1145,115 @@ skip_32_export_trace_service_request(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrU skip_64_export_trace_service_request(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_trace_service_request(Rest, Z1, Z2, F, F@_1, TrUserData). -decode_msg_export_trace_service_response(Bin, TrUserData) -> dfp_read_field_def_export_trace_service_response(Bin, 0, 0, 0, TrUserData). +decode_msg_export_trace_service_response(Bin, TrUserData) -> dfp_read_field_def_export_trace_service_response(Bin, 0, 0, 0, id('$undef', TrUserData), TrUserData). -dfp_read_field_def_export_trace_service_response(<<>>, 0, 0, _, _) -> #{}; -dfp_read_field_def_export_trace_service_response(Other, Z1, Z2, F, TrUserData) -> dg_read_field_def_export_trace_service_response(Other, Z1, Z2, F, TrUserData). +dfp_read_field_def_export_trace_service_response(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_export_trace_service_response_partial_success(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_export_trace_service_response(<<>>, 0, 0, _, F@_1, _) -> + S1 = #{}, + if F@_1 == '$undef' -> S1; + true -> S1#{partial_success => F@_1} + end; +dfp_read_field_def_export_trace_service_response(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_export_trace_service_response(Other, Z1, Z2, F, F@_1, TrUserData). -dg_read_field_def_export_trace_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_trace_service_response(Rest, N + 7, X bsl N + Acc, F, TrUserData); -dg_read_field_def_export_trace_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, _, TrUserData) -> +dg_read_field_def_export_trace_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_trace_service_response(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_export_trace_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> Key = X bsl N + Acc, - case Key band 7 of - 0 -> skip_varint_export_trace_service_response(Rest, 0, 0, Key bsr 3, TrUserData); - 1 -> skip_64_export_trace_service_response(Rest, 0, 0, Key bsr 3, TrUserData); - 2 -> skip_length_delimited_export_trace_service_response(Rest, 0, 0, Key bsr 3, TrUserData); - 3 -> skip_group_export_trace_service_response(Rest, 0, 0, Key bsr 3, TrUserData); - 5 -> skip_32_export_trace_service_response(Rest, 0, 0, Key bsr 3, TrUserData) + case Key of + 10 -> d_field_export_trace_service_response_partial_success(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_export_trace_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_export_trace_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_export_trace_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_export_trace_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_export_trace_service_response(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end end; -dg_read_field_def_export_trace_service_response(<<>>, 0, 0, _, _) -> #{}. +dg_read_field_def_export_trace_service_response(<<>>, 0, 0, _, F@_1, _) -> + S1 = #{}, + if F@_1 == '$undef' -> S1; + true -> S1#{partial_success => F@_1} + end. + +d_field_export_trace_service_response_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_export_trace_service_response_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_export_trace_service_response_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_export_trace_partial_success(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_export_trace_service_response(RestF, + 0, + 0, + F, + if Prev == '$undef' -> NewFValue; + true -> merge_msg_export_trace_partial_success(Prev, NewFValue, TrUserData) + end, + TrUserData). -skip_varint_export_trace_service_response(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> skip_varint_export_trace_service_response(Rest, Z1, Z2, F, TrUserData); -skip_varint_export_trace_service_response(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_export_trace_service_response(Rest, Z1, Z2, F, TrUserData). +skip_varint_export_trace_service_response(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_export_trace_service_response(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_export_trace_service_response(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_trace_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). -skip_length_delimited_export_trace_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 57 -> skip_length_delimited_export_trace_service_response(Rest, N + 7, X bsl N + Acc, F, TrUserData); -skip_length_delimited_export_trace_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) -> +skip_length_delimited_export_trace_service_response(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_export_trace_service_response(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_export_trace_service_response(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_export_trace_service_response(Rest2, 0, 0, F, TrUserData). + dfp_read_field_def_export_trace_service_response(Rest2, 0, 0, F, F@_1, TrUserData). -skip_group_export_trace_service_response(Bin, _, Z2, FNum, TrUserData) -> +skip_group_export_trace_service_response(Bin, _, Z2, FNum, F@_1, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_export_trace_service_response(Rest, 0, Z2, FNum, TrUserData). + dfp_read_field_def_export_trace_service_response(Rest, 0, Z2, FNum, F@_1, TrUserData). -skip_32_export_trace_service_response(<<_:32, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_export_trace_service_response(Rest, Z1, Z2, F, TrUserData). +skip_32_export_trace_service_response(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_trace_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). -skip_64_export_trace_service_response(<<_:64, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_export_trace_service_response(Rest, Z1, Z2, F, TrUserData). +skip_64_export_trace_service_response(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_export_trace_service_response(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_export_trace_partial_success(Bin, TrUserData) -> dfp_read_field_def_export_trace_partial_success(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_export_trace_partial_success(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_export_trace_partial_success_rejected_spans(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_export_trace_partial_success(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_export_trace_partial_success_error_message(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_export_trace_partial_success(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{rejected_spans => F@_1, error_message => F@_2}; +dfp_read_field_def_export_trace_partial_success(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_export_trace_partial_success(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_export_trace_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_export_trace_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_export_trace_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> d_field_export_trace_partial_success_rejected_spans(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_export_trace_partial_success_error_message(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_export_trace_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_export_trace_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_export_trace_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_export_trace_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_export_trace_partial_success(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_export_trace_partial_success(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{rejected_spans => F@_1, error_message => F@_2}. + +d_field_export_trace_partial_success_rejected_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_export_trace_partial_success_rejected_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_export_trace_partial_success_rejected_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = {begin <> = <<(X bsl N + Acc):64/unsigned-native>>, id(Res, TrUserData) end, Rest}, + dfp_read_field_def_export_trace_partial_success(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_export_trace_partial_success_error_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_export_trace_partial_success_error_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_export_trace_partial_success_error_message(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_export_trace_partial_success(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_export_trace_partial_success(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_export_trace_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_export_trace_partial_success(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_trace_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_export_trace_partial_success(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_export_trace_partial_success(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_export_trace_partial_success(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_export_trace_partial_success(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_export_trace_partial_success(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_export_trace_partial_success(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_export_trace_partial_success(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_trace_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_export_trace_partial_success(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_export_trace_partial_success(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). decode_msg_traces_data(Bin, TrUserData) -> dfp_read_field_def_traces_data(Bin, 0, 0, 0, id([], TrUserData), TrUserData). @@ -1261,56 +1307,48 @@ skip_32_traces_data(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_r skip_64_traces_data(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_traces_data(Rest, Z1, Z2, F, F@_1, TrUserData). -decode_msg_resource_spans(Bin, TrUserData) -> dfp_read_field_def_resource_spans(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). +decode_msg_resource_spans(Bin, TrUserData) -> dfp_read_field_def_resource_spans(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_resource_spans(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_resource_spans_resource(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_resource_spans(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_resource_spans_scope_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_resource_spans(<<194, 62, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_resource_spans_instrumentation_library_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_resource_spans(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_resource_spans_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_resource_spans(<<>>, 0, 0, _, F@_1, R1, R2, F@_4, TrUserData) -> - S1 = #{schema_url => F@_4}, +dfp_read_field_def_resource_spans(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_spans_resource(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_spans(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_spans_scope_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_spans(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_resource_spans_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_resource_spans(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> + S1 = #{schema_url => F@_3}, S2 = if F@_1 == '$undef' -> S1; true -> S1#{resource => F@_1} end, - S3 = if R1 == '$undef' -> S2; - true -> S2#{scope_spans => lists_reverse(R1, TrUserData)} - end, - if R2 == '$undef' -> S3; - true -> S3#{instrumentation_library_spans => lists_reverse(R2, TrUserData)} + if R1 == '$undef' -> S2; + true -> S2#{scope_spans => lists_reverse(R1, TrUserData)} end; -dfp_read_field_def_resource_spans(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_resource_spans(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +dfp_read_field_def_resource_spans(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_resource_spans(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -dg_read_field_def_resource_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_resource_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dg_read_field_def_resource_spans(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +dg_read_field_def_resource_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_resource_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_resource_spans(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_resource_spans_resource(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 18 -> d_field_resource_spans_scope_spans(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 8002 -> d_field_resource_spans_instrumentation_library_spans(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 26 -> d_field_resource_spans_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 10 -> d_field_resource_spans_resource(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_resource_spans_scope_spans(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_resource_spans_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 1 -> skip_64_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 2 -> skip_length_delimited_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 3 -> skip_group_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 5 -> skip_32_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + 0 -> skip_varint_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_resource_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) end end; -dg_read_field_def_resource_spans(<<>>, 0, 0, _, F@_1, R1, R2, F@_4, TrUserData) -> - S1 = #{schema_url => F@_4}, +dg_read_field_def_resource_spans(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> + S1 = #{schema_url => F@_3}, S2 = if F@_1 == '$undef' -> S1; true -> S1#{resource => F@_1} end, - S3 = if R1 == '$undef' -> S2; - true -> S2#{scope_spans => lists_reverse(R1, TrUserData)} - end, - if R2 == '$undef' -> S3; - true -> S3#{instrumentation_library_spans => lists_reverse(R2, TrUserData)} + if R1 == '$undef' -> S2; + true -> S2#{scope_spans => lists_reverse(R1, TrUserData)} end. -d_field_resource_spans_resource(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_resource_spans_resource(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_resource_spans_resource(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, F@_4, TrUserData) -> +d_field_resource_spans_resource(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_spans_resource(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_spans_resource(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_resource(Bs, TrUserData), TrUserData), Rest2} end, dfp_read_field_def_resource_spans(RestF, 0, @@ -1321,41 +1359,34 @@ d_field_resource_spans_resource(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2 end, F@_2, F@_3, - F@_4, TrUserData). -d_field_resource_spans_scope_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_resource_spans_scope_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_resource_spans_scope_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, F@_4, TrUserData) -> +d_field_resource_spans_scope_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_spans_scope_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_spans_scope_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_scope_spans(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_resource_spans(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, F@_4, TrUserData). + dfp_read_field_def_resource_spans(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData). -d_field_resource_spans_instrumentation_library_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> - d_field_resource_spans_instrumentation_library_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_resource_spans_instrumentation_library_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, F@_4, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_instrumentation_library_spans(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_resource_spans(RestF, 0, 0, F, F@_1, F@_2, cons(NewFValue, Prev, TrUserData), F@_4, TrUserData). - -d_field_resource_spans_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_resource_spans_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_resource_spans_schema_url(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> +d_field_resource_spans_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_resource_spans_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_resource_spans_schema_url(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_resource_spans(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + dfp_read_field_def_resource_spans(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). -skip_varint_resource_spans(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_resource_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -skip_varint_resource_spans(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_resource_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +skip_varint_resource_spans(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_resource_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_resource_spans(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -skip_length_delimited_resource_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_resource_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -skip_length_delimited_resource_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +skip_length_delimited_resource_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_resource_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_resource_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_resource_spans(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + dfp_read_field_def_resource_spans(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). -skip_group_resource_spans(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +skip_group_resource_spans(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_resource_spans(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + dfp_read_field_def_resource_spans(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). -skip_32_resource_spans(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_resource_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +skip_32_resource_spans(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -skip_64_resource_spans(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_resource_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +skip_64_resource_spans(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_resource_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). decode_msg_scope_spans(Bin, TrUserData) -> dfp_read_field_def_scope_spans(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). @@ -1438,88 +1469,6 @@ skip_32_scope_spans(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserDa skip_64_scope_spans(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_scope_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -decode_msg_instrumentation_library_spans(Bin, TrUserData) -> dfp_read_field_def_instrumentation_library_spans(Bin, 0, 0, 0, id('$undef', TrUserData), id([], TrUserData), id(<<>>, TrUserData), TrUserData). - -dfp_read_field_def_instrumentation_library_spans(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_instrumentation_library_spans_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_instrumentation_library_spans(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_instrumentation_library_spans_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_instrumentation_library_spans(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_instrumentation_library_spans_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_instrumentation_library_spans(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> - S1 = #{schema_url => F@_3}, - S2 = if F@_1 == '$undef' -> S1; - true -> S1#{instrumentation_library => F@_1} - end, - if R1 == '$undef' -> S2; - true -> S2#{spans => lists_reverse(R1, TrUserData)} - end; -dfp_read_field_def_instrumentation_library_spans(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_instrumentation_library_spans(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - -dg_read_field_def_instrumentation_library_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_library_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -dg_read_field_def_instrumentation_library_spans(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> - Key = X bsl N + Acc, - case Key of - 10 -> d_field_instrumentation_library_spans_instrumentation_library(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 18 -> d_field_instrumentation_library_spans_spans(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 26 -> d_field_instrumentation_library_spans_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_instrumentation_library_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 1 -> skip_64_instrumentation_library_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 2 -> skip_length_delimited_instrumentation_library_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 3 -> skip_group_instrumentation_library_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 5 -> skip_32_instrumentation_library_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) - end - end; -dg_read_field_def_instrumentation_library_spans(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> - S1 = #{schema_url => F@_3}, - S2 = if F@_1 == '$undef' -> S1; - true -> S1#{instrumentation_library => F@_1} - end, - if R1 == '$undef' -> S2; - true -> S2#{spans => lists_reverse(R1, TrUserData)} - end. - -d_field_instrumentation_library_spans_instrumentation_library(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> - d_field_instrumentation_library_spans_instrumentation_library(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_instrumentation_library_spans_instrumentation_library(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_instrumentation_library(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library_spans(RestF, - 0, - 0, - F, - if Prev == '$undef' -> NewFValue; - true -> merge_msg_instrumentation_library(Prev, NewFValue, TrUserData) - end, - F@_2, - F@_3, - TrUserData). - -d_field_instrumentation_library_spans_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_instrumentation_library_spans_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_instrumentation_library_spans_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_span(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library_spans(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData). - -d_field_instrumentation_library_spans_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_instrumentation_library_spans_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_instrumentation_library_spans_schema_url(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library_spans(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). - -skip_varint_instrumentation_library_spans(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_instrumentation_library_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -skip_varint_instrumentation_library_spans(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_instrumentation_library_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - -skip_length_delimited_instrumentation_library_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_instrumentation_library_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -skip_length_delimited_instrumentation_library_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> - Length = X bsl N + Acc, - <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_instrumentation_library_spans(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). - -skip_group_instrumentation_library_spans(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_instrumentation_library_spans(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). - -skip_32_instrumentation_library_spans(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_instrumentation_library_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - -skip_64_instrumentation_library_spans(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_instrumentation_library_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - decode_msg_event(Bin, TrUserData) -> dfp_read_field_def_event(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id([], TrUserData), id(0, TrUserData), TrUserData). dfp_read_field_def_event(<<9, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_event_time_unix_nano(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); @@ -2246,107 +2195,79 @@ skip_32_key_value(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d skip_64_key_value(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -decode_msg_instrumentation_library(Bin, TrUserData) -> dfp_read_field_def_instrumentation_library(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). +decode_msg_instrumentation_scope(Bin, TrUserData) -> dfp_read_field_def_instrumentation_scope(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id([], TrUserData), id(0, TrUserData), TrUserData). -dfp_read_field_def_instrumentation_library(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_instrumentation_library_name(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_instrumentation_library(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_instrumentation_library_version(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_instrumentation_library(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{name => F@_1, version => F@_2}; -dfp_read_field_def_instrumentation_library(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_instrumentation_library(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). +dfp_read_field_def_instrumentation_scope(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_name(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_attributes(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_instrumentation_scope_dropped_attributes_count(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, R1, F@_4, TrUserData) -> + S1 = #{name => F@_1, version => F@_2, dropped_attributes_count => F@_4}, + if R1 == '$undef' -> S1; + true -> S1#{attributes => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -dg_read_field_def_instrumentation_library(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_library(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_instrumentation_library(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> +dg_read_field_def_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_instrumentation_library_name(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 18 -> d_field_instrumentation_library_version(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 10 -> d_field_instrumentation_scope_name(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 18 -> d_field_instrumentation_scope_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 26 -> d_field_instrumentation_scope_attributes(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 32 -> d_field_instrumentation_scope_dropped_attributes_count(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_instrumentation_library(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + 0 -> skip_varint_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) end end; -dg_read_field_def_instrumentation_library(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{name => F@_1, version => F@_2}. +dg_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, R1, F@_4, TrUserData) -> + S1 = #{name => F@_1, version => F@_2, dropped_attributes_count => F@_4}, + if R1 == '$undef' -> S1; + true -> S1#{attributes => lists_reverse(R1, TrUserData)} + end. -d_field_instrumentation_library_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_instrumentation_library_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_instrumentation_library_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> +d_field_instrumentation_scope_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). -d_field_instrumentation_library_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_instrumentation_library_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_instrumentation_library_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> +d_field_instrumentation_scope_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_library(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). -skip_varint_instrumentation_library(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_instrumentation_library(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_length_delimited_instrumentation_library(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_instrumentation_library(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_instrumentation_library(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> - Length = X bsl N + Acc, - <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_instrumentation_library(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). - -skip_group_instrumentation_library(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_instrumentation_library(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). - -skip_32_instrumentation_library(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_64_instrumentation_library(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_library(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -decode_msg_instrumentation_scope(Bin, TrUserData) -> dfp_read_field_def_instrumentation_scope(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). - -dfp_read_field_def_instrumentation_scope(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_instrumentation_scope_name(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_instrumentation_scope(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_instrumentation_scope_version(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{name => F@_1, version => F@_2}; -dfp_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_instrumentation_scope(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). - -dg_read_field_def_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> - Key = X bsl N + Acc, - case Key of - 10 -> d_field_instrumentation_scope_name(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 18 -> d_field_instrumentation_scope_version(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_instrumentation_scope(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) - end - end; -dg_read_field_def_instrumentation_scope(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{name => F@_1, version => F@_2}. - -d_field_instrumentation_scope_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_instrumentation_scope_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_instrumentation_scope_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). +d_field_instrumentation_scope_attributes(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_instrumentation_scope_attributes(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_attributes(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, F@_4, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_key_value(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, F@_2, cons(NewFValue, Prev, TrUserData), F@_4, TrUserData). -d_field_instrumentation_scope_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_instrumentation_scope_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_instrumentation_scope_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). +d_field_instrumentation_scope_dropped_attributes_count(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> + d_field_instrumentation_scope_dropped_attributes_count(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_instrumentation_scope_dropped_attributes_count(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_instrumentation_scope(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). -skip_varint_instrumentation_scope(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_instrumentation_scope(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_varint_instrumentation_scope(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_instrumentation_scope(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_length_delimited_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> +skip_length_delimited_instrumentation_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_instrumentation_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_instrumentation_scope(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_instrumentation_scope(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + dfp_read_field_def_instrumentation_scope(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_group_instrumentation_scope(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> +skip_group_instrumentation_scope(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_instrumentation_scope(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + dfp_read_field_def_instrumentation_scope(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_32_instrumentation_scope(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_32_instrumentation_scope(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_64_instrumentation_scope(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_64_instrumentation_scope(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_instrumentation_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). decode_msg_resource(Bin, TrUserData) -> dfp_read_field_def_resource(Bin, 0, 0, 0, id([], TrUserData), id(0, TrUserData), TrUserData). @@ -2485,10 +2406,10 @@ merge_msgs(Prev, New, MsgName, Opts) -> case MsgName of export_trace_service_request -> merge_msg_export_trace_service_request(Prev, New, TrUserData); export_trace_service_response -> merge_msg_export_trace_service_response(Prev, New, TrUserData); + export_trace_partial_success -> merge_msg_export_trace_partial_success(Prev, New, TrUserData); traces_data -> merge_msg_traces_data(Prev, New, TrUserData); resource_spans -> merge_msg_resource_spans(Prev, New, TrUserData); scope_spans -> merge_msg_scope_spans(Prev, New, TrUserData); - instrumentation_library_spans -> merge_msg_instrumentation_library_spans(Prev, New, TrUserData); event -> merge_msg_event(Prev, New, TrUserData); link -> merge_msg_link(Prev, New, TrUserData); span -> merge_msg_span(Prev, New, TrUserData); @@ -2497,7 +2418,6 @@ merge_msgs(Prev, New, MsgName, Opts) -> array_value -> merge_msg_array_value(Prev, New, TrUserData); key_value_list -> merge_msg_key_value_list(Prev, New, TrUserData); key_value -> merge_msg_key_value(Prev, New, TrUserData); - instrumentation_library -> merge_msg_instrumentation_library(Prev, New, TrUserData); instrumentation_scope -> merge_msg_instrumentation_scope(Prev, New, TrUserData); resource -> merge_msg_resource(Prev, New, TrUserData) end. @@ -2513,7 +2433,28 @@ merge_msg_export_trace_service_request(PMsg, NMsg, TrUserData) -> end. -compile({nowarn_unused_function,merge_msg_export_trace_service_response/3}). -merge_msg_export_trace_service_response(_Prev, New, _TrUserData) -> New. +merge_msg_export_trace_service_response(PMsg, NMsg, TrUserData) -> + S1 = #{}, + case {PMsg, NMsg} of + {#{partial_success := PFpartial_success}, #{partial_success := NFpartial_success}} -> S1#{partial_success => merge_msg_export_trace_partial_success(PFpartial_success, NFpartial_success, TrUserData)}; + {_, #{partial_success := NFpartial_success}} -> S1#{partial_success => NFpartial_success}; + {#{partial_success := PFpartial_success}, _} -> S1#{partial_success => PFpartial_success}; + {_, _} -> S1 + end. + +-compile({nowarn_unused_function,merge_msg_export_trace_partial_success/3}). +merge_msg_export_trace_partial_success(PMsg, NMsg, _) -> + S1 = #{}, + S2 = case {PMsg, NMsg} of + {_, #{rejected_spans := NFrejected_spans}} -> S1#{rejected_spans => NFrejected_spans}; + {#{rejected_spans := PFrejected_spans}, _} -> S1#{rejected_spans => PFrejected_spans}; + _ -> S1 + end, + case {PMsg, NMsg} of + {_, #{error_message := NFerror_message}} -> S2#{error_message => NFerror_message}; + {#{error_message := PFerror_message}, _} -> S2#{error_message => PFerror_message}; + _ -> S2 + end. -compile({nowarn_unused_function,merge_msg_traces_data/3}). merge_msg_traces_data(PMsg, NMsg, TrUserData) -> @@ -2540,17 +2481,10 @@ merge_msg_resource_spans(PMsg, NMsg, TrUserData) -> {#{scope_spans := PFscope_spans}, _} -> S2#{scope_spans => PFscope_spans}; {_, _} -> S2 end, - S4 = case {PMsg, NMsg} of - {#{instrumentation_library_spans := PFinstrumentation_library_spans}, #{instrumentation_library_spans := NFinstrumentation_library_spans}} -> - S3#{instrumentation_library_spans => 'erlang_++'(PFinstrumentation_library_spans, NFinstrumentation_library_spans, TrUserData)}; - {_, #{instrumentation_library_spans := NFinstrumentation_library_spans}} -> S3#{instrumentation_library_spans => NFinstrumentation_library_spans}; - {#{instrumentation_library_spans := PFinstrumentation_library_spans}, _} -> S3#{instrumentation_library_spans => PFinstrumentation_library_spans}; - {_, _} -> S3 - end, case {PMsg, NMsg} of - {_, #{schema_url := NFschema_url}} -> S4#{schema_url => NFschema_url}; - {#{schema_url := PFschema_url}, _} -> S4#{schema_url => PFschema_url}; - _ -> S4 + {_, #{schema_url := NFschema_url}} -> S3#{schema_url => NFschema_url}; + {#{schema_url := PFschema_url}, _} -> S3#{schema_url => PFschema_url}; + _ -> S3 end. -compile({nowarn_unused_function,merge_msg_scope_spans/3}). @@ -2574,27 +2508,6 @@ merge_msg_scope_spans(PMsg, NMsg, TrUserData) -> _ -> S3 end. --compile({nowarn_unused_function,merge_msg_instrumentation_library_spans/3}). -merge_msg_instrumentation_library_spans(PMsg, NMsg, TrUserData) -> - S1 = #{}, - S2 = case {PMsg, NMsg} of - {#{instrumentation_library := PFinstrumentation_library}, #{instrumentation_library := NFinstrumentation_library}} -> S1#{instrumentation_library => merge_msg_instrumentation_library(PFinstrumentation_library, NFinstrumentation_library, TrUserData)}; - {_, #{instrumentation_library := NFinstrumentation_library}} -> S1#{instrumentation_library => NFinstrumentation_library}; - {#{instrumentation_library := PFinstrumentation_library}, _} -> S1#{instrumentation_library => PFinstrumentation_library}; - {_, _} -> S1 - end, - S3 = case {PMsg, NMsg} of - {#{spans := PFspans}, #{spans := NFspans}} -> S2#{spans => 'erlang_++'(PFspans, NFspans, TrUserData)}; - {_, #{spans := NFspans}} -> S2#{spans => NFspans}; - {#{spans := PFspans}, _} -> S2#{spans => PFspans}; - {_, _} -> S2 - end, - case {PMsg, NMsg} of - {_, #{schema_url := NFschema_url}} -> S3#{schema_url => NFschema_url}; - {#{schema_url := PFschema_url}, _} -> S3#{schema_url => PFschema_url}; - _ -> S3 - end. - -compile({nowarn_unused_function,merge_msg_event/3}). merge_msg_event(PMsg, NMsg, TrUserData) -> S1 = #{}, @@ -2793,32 +2706,29 @@ merge_msg_key_value(PMsg, NMsg, TrUserData) -> {_, _} -> S2 end. --compile({nowarn_unused_function,merge_msg_instrumentation_library/3}). -merge_msg_instrumentation_library(PMsg, NMsg, _) -> - S1 = #{}, - S2 = case {PMsg, NMsg} of - {_, #{name := NFname}} -> S1#{name => NFname}; - {#{name := PFname}, _} -> S1#{name => PFname}; - _ -> S1 - end, - case {PMsg, NMsg} of - {_, #{version := NFversion}} -> S2#{version => NFversion}; - {#{version := PFversion}, _} -> S2#{version => PFversion}; - _ -> S2 - end. - -compile({nowarn_unused_function,merge_msg_instrumentation_scope/3}). -merge_msg_instrumentation_scope(PMsg, NMsg, _) -> +merge_msg_instrumentation_scope(PMsg, NMsg, TrUserData) -> S1 = #{}, S2 = case {PMsg, NMsg} of {_, #{name := NFname}} -> S1#{name => NFname}; {#{name := PFname}, _} -> S1#{name => PFname}; _ -> S1 end, + S3 = case {PMsg, NMsg} of + {_, #{version := NFversion}} -> S2#{version => NFversion}; + {#{version := PFversion}, _} -> S2#{version => PFversion}; + _ -> S2 + end, + S4 = case {PMsg, NMsg} of + {#{attributes := PFattributes}, #{attributes := NFattributes}} -> S3#{attributes => 'erlang_++'(PFattributes, NFattributes, TrUserData)}; + {_, #{attributes := NFattributes}} -> S3#{attributes => NFattributes}; + {#{attributes := PFattributes}, _} -> S3#{attributes => PFattributes}; + {_, _} -> S3 + end, case {PMsg, NMsg} of - {_, #{version := NFversion}} -> S2#{version => NFversion}; - {#{version := PFversion}, _} -> S2#{version => PFversion}; - _ -> S2 + {_, #{dropped_attributes_count := NFdropped_attributes_count}} -> S4#{dropped_attributes_count => NFdropped_attributes_count}; + {#{dropped_attributes_count := PFdropped_attributes_count}, _} -> S4#{dropped_attributes_count => PFdropped_attributes_count}; + _ -> S4 end. -compile({nowarn_unused_function,merge_msg_resource/3}). @@ -2844,10 +2754,10 @@ verify_msg(Msg, MsgName, Opts) -> case MsgName of export_trace_service_request -> v_msg_export_trace_service_request(Msg, [MsgName], TrUserData); export_trace_service_response -> v_msg_export_trace_service_response(Msg, [MsgName], TrUserData); + export_trace_partial_success -> v_msg_export_trace_partial_success(Msg, [MsgName], TrUserData); traces_data -> v_msg_traces_data(Msg, [MsgName], TrUserData); resource_spans -> v_msg_resource_spans(Msg, [MsgName], TrUserData); scope_spans -> v_msg_scope_spans(Msg, [MsgName], TrUserData); - instrumentation_library_spans -> v_msg_instrumentation_library_spans(Msg, [MsgName], TrUserData); event -> v_msg_event(Msg, [MsgName], TrUserData); link -> v_msg_link(Msg, [MsgName], TrUserData); span -> v_msg_span(Msg, [MsgName], TrUserData); @@ -2856,7 +2766,6 @@ verify_msg(Msg, MsgName, Opts) -> array_value -> v_msg_array_value(Msg, [MsgName], TrUserData); key_value_list -> v_msg_key_value_list(Msg, [MsgName], TrUserData); key_value -> v_msg_key_value(Msg, [MsgName], TrUserData); - instrumentation_library -> v_msg_instrumentation_library(Msg, [MsgName], TrUserData); instrumentation_scope -> v_msg_instrumentation_scope(Msg, [MsgName], TrUserData); resource -> v_msg_resource(Msg, [MsgName], TrUserData); _ -> mk_type_error(not_a_known_message, Msg, []) @@ -2885,12 +2794,39 @@ v_msg_export_trace_service_request(X, Path, _TrUserData) -> mk_type_error({expec -compile({nowarn_unused_function,v_msg_export_trace_service_response/3}). -dialyzer({nowarn_function,v_msg_export_trace_service_response/3}). -v_msg_export_trace_service_response(#{} = M, Path, _) -> - lists:foreach(fun (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) end, maps:keys(M)), +v_msg_export_trace_service_response(#{} = M, Path, TrUserData) -> + case M of + #{partial_success := F1} -> v_msg_export_trace_partial_success(F1, [partial_success | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (partial_success) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), ok; v_msg_export_trace_service_response(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), export_trace_service_response}, M, Path); v_msg_export_trace_service_response(X, Path, _TrUserData) -> mk_type_error({expected_msg, export_trace_service_response}, X, Path). +-compile({nowarn_unused_function,v_msg_export_trace_partial_success/3}). +-dialyzer({nowarn_function,v_msg_export_trace_partial_success/3}). +v_msg_export_trace_partial_success(#{} = M, Path, TrUserData) -> + case M of + #{rejected_spans := F1} -> v_type_int64(F1, [rejected_spans | Path], TrUserData); + _ -> ok + end, + case M of + #{error_message := F2} -> v_type_string(F2, [error_message | Path], TrUserData); + _ -> ok + end, + lists:foreach(fun (rejected_spans) -> ok; + (error_message) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +v_msg_export_trace_partial_success(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), export_trace_partial_success}, M, Path); +v_msg_export_trace_partial_success(X, Path, _TrUserData) -> mk_type_error({expected_msg, export_trace_partial_success}, X, Path). + -compile({nowarn_unused_function,v_msg_traces_data/3}). -dialyzer({nowarn_function,v_msg_traces_data/3}). v_msg_traces_data(#{} = M, Path, TrUserData) -> @@ -2928,21 +2864,11 @@ v_msg_resource_spans(#{} = M, Path, TrUserData) -> _ -> ok end, case M of - #{instrumentation_library_spans := F3} -> - if is_list(F3) -> - _ = [v_msg_instrumentation_library_spans(Elem, [instrumentation_library_spans | Path], TrUserData) || Elem <- F3], - ok; - true -> mk_type_error({invalid_list_of, {msg, instrumentation_library_spans}}, F3, [instrumentation_library_spans | Path]) - end; - _ -> ok - end, - case M of - #{schema_url := F4} -> v_type_string(F4, [schema_url | Path], TrUserData); + #{schema_url := F3} -> v_type_string(F3, [schema_url | Path], TrUserData); _ -> ok end, lists:foreach(fun (resource) -> ok; (scope_spans) -> ok; - (instrumentation_library_spans) -> ok; (schema_url) -> ok; (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) end, @@ -2981,36 +2907,6 @@ v_msg_scope_spans(#{} = M, Path, TrUserData) -> v_msg_scope_spans(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), scope_spans}, M, Path); v_msg_scope_spans(X, Path, _TrUserData) -> mk_type_error({expected_msg, scope_spans}, X, Path). --compile({nowarn_unused_function,v_msg_instrumentation_library_spans/3}). --dialyzer({nowarn_function,v_msg_instrumentation_library_spans/3}). -v_msg_instrumentation_library_spans(#{} = M, Path, TrUserData) -> - case M of - #{instrumentation_library := F1} -> v_msg_instrumentation_library(F1, [instrumentation_library | Path], TrUserData); - _ -> ok - end, - case M of - #{spans := F2} -> - if is_list(F2) -> - _ = [v_msg_span(Elem, [spans | Path], TrUserData) || Elem <- F2], - ok; - true -> mk_type_error({invalid_list_of, {msg, span}}, F2, [spans | Path]) - end; - _ -> ok - end, - case M of - #{schema_url := F3} -> v_type_string(F3, [schema_url | Path], TrUserData); - _ -> ok - end, - lists:foreach(fun (instrumentation_library) -> ok; - (spans) -> ok; - (schema_url) -> ok; - (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) - end, - maps:keys(M)), - ok; -v_msg_instrumentation_library_spans(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), instrumentation_library_spans}, M, Path); -v_msg_instrumentation_library_spans(X, Path, _TrUserData) -> mk_type_error({expected_msg, instrumentation_library_spans}, X, Path). - -compile({nowarn_unused_function,v_msg_event/3}). -dialyzer({nowarn_function,v_msg_event/3}). v_msg_event(#{} = M, Path, TrUserData) -> @@ -3288,9 +3184,9 @@ v_msg_key_value(#{} = M, Path, TrUserData) -> v_msg_key_value(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), key_value}, M, Path); v_msg_key_value(X, Path, _TrUserData) -> mk_type_error({expected_msg, key_value}, X, Path). --compile({nowarn_unused_function,v_msg_instrumentation_library/3}). --dialyzer({nowarn_function,v_msg_instrumentation_library/3}). -v_msg_instrumentation_library(#{} = M, Path, TrUserData) -> +-compile({nowarn_unused_function,v_msg_instrumentation_scope/3}). +-dialyzer({nowarn_function,v_msg_instrumentation_scope/3}). +v_msg_instrumentation_scope(#{} = M, Path, TrUserData) -> case M of #{name := F1} -> v_type_string(F1, [name | Path], TrUserData); _ -> ok @@ -3299,28 +3195,23 @@ v_msg_instrumentation_library(#{} = M, Path, TrUserData) -> #{version := F2} -> v_type_string(F2, [version | Path], TrUserData); _ -> ok end, - lists:foreach(fun (name) -> ok; - (version) -> ok; - (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) - end, - maps:keys(M)), - ok; -v_msg_instrumentation_library(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), instrumentation_library}, M, Path); -v_msg_instrumentation_library(X, Path, _TrUserData) -> mk_type_error({expected_msg, instrumentation_library}, X, Path). - --compile({nowarn_unused_function,v_msg_instrumentation_scope/3}). --dialyzer({nowarn_function,v_msg_instrumentation_scope/3}). -v_msg_instrumentation_scope(#{} = M, Path, TrUserData) -> case M of - #{name := F1} -> v_type_string(F1, [name | Path], TrUserData); + #{attributes := F3} -> + if is_list(F3) -> + _ = [v_msg_key_value(Elem, [attributes | Path], TrUserData) || Elem <- F3], + ok; + true -> mk_type_error({invalid_list_of, {msg, key_value}}, F3, [attributes | Path]) + end; _ -> ok end, case M of - #{version := F2} -> v_type_string(F2, [version | Path], TrUserData); + #{dropped_attributes_count := F4} -> v_type_uint32(F4, [dropped_attributes_count | Path], TrUserData); _ -> ok end, lists:foreach(fun (name) -> ok; (version) -> ok; + (attributes) -> ok; + (dropped_attributes_count) -> ok; (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) end, maps:keys(M)), @@ -3465,21 +3356,17 @@ get_msg_defs() -> [{{enum, 'span.SpanKind'}, [{'SPAN_KIND_UNSPECIFIED', 0}, {'SPAN_KIND_INTERNAL', 1}, {'SPAN_KIND_SERVER', 2}, {'SPAN_KIND_CLIENT', 3}, {'SPAN_KIND_PRODUCER', 4}, {'SPAN_KIND_CONSUMER', 5}]}, {{enum, 'status.StatusCode'}, [{'STATUS_CODE_UNSET', 0}, {'STATUS_CODE_OK', 1}, {'STATUS_CODE_ERROR', 2}]}, {{msg, export_trace_service_request}, [#{name => resource_spans, fnum => 1, rnum => 2, type => {msg, resource_spans}, occurrence => repeated, opts => []}]}, - {{msg, export_trace_service_response}, []}, + {{msg, export_trace_service_response}, [#{name => partial_success, fnum => 1, rnum => 2, type => {msg, export_trace_partial_success}, occurrence => optional, opts => []}]}, + {{msg, export_trace_partial_success}, [#{name => rejected_spans, fnum => 1, rnum => 2, type => int64, occurrence => optional, opts => []}, #{name => error_message, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}]}, {{msg, traces_data}, [#{name => resource_spans, fnum => 1, rnum => 2, type => {msg, resource_spans}, occurrence => repeated, opts => []}]}, {{msg, resource_spans}, [#{name => resource, fnum => 1, rnum => 2, type => {msg, resource}, occurrence => optional, opts => []}, #{name => scope_spans, fnum => 2, rnum => 3, type => {msg, scope_spans}, occurrence => repeated, opts => []}, - #{name => instrumentation_library_spans, fnum => 1000, rnum => 4, type => {msg, instrumentation_library_spans}, occurrence => repeated, opts => [deprecated]}, - #{name => schema_url, fnum => 3, rnum => 5, type => string, occurrence => optional, opts => []}]}, + #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]}, {{msg, scope_spans}, [#{name => scope, fnum => 1, rnum => 2, type => {msg, instrumentation_scope}, occurrence => optional, opts => []}, #{name => spans, fnum => 2, rnum => 3, type => {msg, span}, occurrence => repeated, opts => []}, #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]}, - {{msg, instrumentation_library_spans}, - [#{name => instrumentation_library, fnum => 1, rnum => 2, type => {msg, instrumentation_library}, occurrence => optional, opts => []}, - #{name => spans, fnum => 2, rnum => 3, type => {msg, span}, occurrence => repeated, opts => []}, - #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]}, {{msg, event}, [#{name => time_unix_nano, fnum => 1, rnum => 2, type => fixed64, occurrence => optional, opts => []}, #{name => name, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}, @@ -3522,52 +3409,23 @@ get_msg_defs() -> {{msg, array_value}, [#{name => values, fnum => 1, rnum => 2, type => {msg, any_value}, occurrence => repeated, opts => []}]}, {{msg, key_value_list}, [#{name => values, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}]}, {{msg, key_value}, [#{name => key, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => value, fnum => 2, rnum => 3, type => {msg, any_value}, occurrence => optional, opts => []}]}, - {{msg, instrumentation_library}, [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => version, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}]}, - {{msg, instrumentation_scope}, [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => version, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}]}, + {{msg, instrumentation_scope}, + [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, + #{name => version, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}, + #{name => attributes, fnum => 3, rnum => 4, type => {msg, key_value}, occurrence => repeated, opts => []}, + #{name => dropped_attributes_count, fnum => 4, rnum => 5, type => uint32, occurrence => optional, opts => []}]}, {{msg, resource}, [#{name => attributes, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}, #{name => dropped_attributes_count, fnum => 2, rnum => 3, type => uint32, occurrence => optional, opts => []}]}]. get_msg_names() -> - [export_trace_service_request, - export_trace_service_response, - traces_data, - resource_spans, - scope_spans, - instrumentation_library_spans, - event, - link, - span, - status, - any_value, - array_value, - key_value_list, - key_value, - instrumentation_library, - instrumentation_scope, - resource]. + [export_trace_service_request, export_trace_service_response, export_trace_partial_success, traces_data, resource_spans, scope_spans, event, link, span, status, any_value, array_value, key_value_list, key_value, instrumentation_scope, resource]. get_group_names() -> []. get_msg_or_group_names() -> - [export_trace_service_request, - export_trace_service_response, - traces_data, - resource_spans, - scope_spans, - instrumentation_library_spans, - event, - link, - span, - status, - any_value, - array_value, - key_value_list, - key_value, - instrumentation_library, - instrumentation_scope, - resource]. + [export_trace_service_request, export_trace_service_response, export_trace_partial_success, traces_data, resource_spans, scope_spans, event, link, span, status, any_value, array_value, key_value_list, key_value, instrumentation_scope, resource]. get_enum_names() -> ['span.SpanKind', 'status.StatusCode']. @@ -3588,21 +3446,17 @@ fetch_enum_def(EnumName) -> find_msg_def(export_trace_service_request) -> [#{name => resource_spans, fnum => 1, rnum => 2, type => {msg, resource_spans}, occurrence => repeated, opts => []}]; -find_msg_def(export_trace_service_response) -> []; +find_msg_def(export_trace_service_response) -> [#{name => partial_success, fnum => 1, rnum => 2, type => {msg, export_trace_partial_success}, occurrence => optional, opts => []}]; +find_msg_def(export_trace_partial_success) -> [#{name => rejected_spans, fnum => 1, rnum => 2, type => int64, occurrence => optional, opts => []}, #{name => error_message, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}]; find_msg_def(traces_data) -> [#{name => resource_spans, fnum => 1, rnum => 2, type => {msg, resource_spans}, occurrence => repeated, opts => []}]; find_msg_def(resource_spans) -> [#{name => resource, fnum => 1, rnum => 2, type => {msg, resource}, occurrence => optional, opts => []}, #{name => scope_spans, fnum => 2, rnum => 3, type => {msg, scope_spans}, occurrence => repeated, opts => []}, - #{name => instrumentation_library_spans, fnum => 1000, rnum => 4, type => {msg, instrumentation_library_spans}, occurrence => repeated, opts => [deprecated]}, - #{name => schema_url, fnum => 3, rnum => 5, type => string, occurrence => optional, opts => []}]; + #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]; find_msg_def(scope_spans) -> [#{name => scope, fnum => 1, rnum => 2, type => {msg, instrumentation_scope}, occurrence => optional, opts => []}, #{name => spans, fnum => 2, rnum => 3, type => {msg, span}, occurrence => repeated, opts => []}, #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]; -find_msg_def(instrumentation_library_spans) -> - [#{name => instrumentation_library, fnum => 1, rnum => 2, type => {msg, instrumentation_library}, occurrence => optional, opts => []}, - #{name => spans, fnum => 2, rnum => 3, type => {msg, span}, occurrence => repeated, opts => []}, - #{name => schema_url, fnum => 3, rnum => 4, type => string, occurrence => optional, opts => []}]; find_msg_def(event) -> [#{name => time_unix_nano, fnum => 1, rnum => 2, type => fixed64, occurrence => optional, opts => []}, #{name => name, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}, @@ -3645,8 +3499,11 @@ find_msg_def(any_value) -> find_msg_def(array_value) -> [#{name => values, fnum => 1, rnum => 2, type => {msg, any_value}, occurrence => repeated, opts => []}]; find_msg_def(key_value_list) -> [#{name => values, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}]; find_msg_def(key_value) -> [#{name => key, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => value, fnum => 2, rnum => 3, type => {msg, any_value}, occurrence => optional, opts => []}]; -find_msg_def(instrumentation_library) -> [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => version, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}]; -find_msg_def(instrumentation_scope) -> [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => version, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}]; +find_msg_def(instrumentation_scope) -> + [#{name => name, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, + #{name => version, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}, + #{name => attributes, fnum => 3, rnum => 4, type => {msg, key_value}, occurrence => repeated, opts => []}, + #{name => dropped_attributes_count, fnum => 4, rnum => 5, type => uint32, occurrence => optional, opts => []}]; find_msg_def(resource) -> [#{name => attributes, fnum => 1, rnum => 2, type => {msg, key_value}, occurrence => repeated, opts => []}, #{name => dropped_attributes_count, fnum => 2, rnum => 3, type => uint32, occurrence => optional, opts => []}]; find_msg_def(_) -> error. @@ -3744,10 +3601,10 @@ service_and_rpc_name_to_fqbins(S, R) -> error({gpb_error, {badservice_or_rpc, {S fqbin_to_msg_name(<<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest">>) -> export_trace_service_request; fqbin_to_msg_name(<<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse">>) -> export_trace_service_response; +fqbin_to_msg_name(<<"opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess">>) -> export_trace_partial_success; fqbin_to_msg_name(<<"opentelemetry.proto.trace.v1.TracesData">>) -> traces_data; fqbin_to_msg_name(<<"opentelemetry.proto.trace.v1.ResourceSpans">>) -> resource_spans; fqbin_to_msg_name(<<"opentelemetry.proto.trace.v1.ScopeSpans">>) -> scope_spans; -fqbin_to_msg_name(<<"opentelemetry.proto.trace.v1.InstrumentationLibrarySpans">>) -> instrumentation_library_spans; fqbin_to_msg_name(<<"opentelemetry.proto.trace.v1.Span.Event">>) -> event; fqbin_to_msg_name(<<"opentelemetry.proto.trace.v1.Span.Link">>) -> link; fqbin_to_msg_name(<<"opentelemetry.proto.trace.v1.Span">>) -> span; @@ -3756,7 +3613,6 @@ fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.AnyValue">>) -> any_value; fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.ArrayValue">>) -> array_value; fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.KeyValueList">>) -> key_value_list; fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.KeyValue">>) -> key_value; -fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.InstrumentationLibrary">>) -> instrumentation_library; fqbin_to_msg_name(<<"opentelemetry.proto.common.v1.InstrumentationScope">>) -> instrumentation_scope; fqbin_to_msg_name(<<"opentelemetry.proto.resource.v1.Resource">>) -> resource; fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}). @@ -3764,10 +3620,10 @@ fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}). msg_name_to_fqbin(export_trace_service_request) -> <<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest">>; msg_name_to_fqbin(export_trace_service_response) -> <<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse">>; +msg_name_to_fqbin(export_trace_partial_success) -> <<"opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess">>; msg_name_to_fqbin(traces_data) -> <<"opentelemetry.proto.trace.v1.TracesData">>; msg_name_to_fqbin(resource_spans) -> <<"opentelemetry.proto.trace.v1.ResourceSpans">>; msg_name_to_fqbin(scope_spans) -> <<"opentelemetry.proto.trace.v1.ScopeSpans">>; -msg_name_to_fqbin(instrumentation_library_spans) -> <<"opentelemetry.proto.trace.v1.InstrumentationLibrarySpans">>; msg_name_to_fqbin(event) -> <<"opentelemetry.proto.trace.v1.Span.Event">>; msg_name_to_fqbin(link) -> <<"opentelemetry.proto.trace.v1.Span.Link">>; msg_name_to_fqbin(span) -> <<"opentelemetry.proto.trace.v1.Span">>; @@ -3776,7 +3632,6 @@ msg_name_to_fqbin(any_value) -> <<"opentelemetry.proto.common.v1.AnyValue">>; msg_name_to_fqbin(array_value) -> <<"opentelemetry.proto.common.v1.ArrayValue">>; msg_name_to_fqbin(key_value_list) -> <<"opentelemetry.proto.common.v1.KeyValueList">>; msg_name_to_fqbin(key_value) -> <<"opentelemetry.proto.common.v1.KeyValue">>; -msg_name_to_fqbin(instrumentation_library) -> <<"opentelemetry.proto.common.v1.InstrumentationLibrary">>; msg_name_to_fqbin(instrumentation_scope) -> <<"opentelemetry.proto.common.v1.InstrumentationScope">>; msg_name_to_fqbin(resource) -> <<"opentelemetry.proto.resource.v1.Resource">>; msg_name_to_fqbin(E) -> error({gpb_error, {badmsg, E}}). @@ -3819,9 +3674,9 @@ get_all_source_basenames() -> ["trace_service.proto", "trace.proto", "common.pro get_all_proto_names() -> ["trace_service", "trace", "common", "resource"]. -get_msg_containment("trace_service") -> [export_trace_service_request, export_trace_service_response]; -get_msg_containment("trace") -> [instrumentation_library_spans, resource_spans, scope_spans, span, event, link, status, traces_data]; -get_msg_containment("common") -> [any_value, array_value, instrumentation_library, instrumentation_scope, key_value, key_value_list]; +get_msg_containment("trace_service") -> [export_trace_partial_success, export_trace_service_request, export_trace_service_response]; +get_msg_containment("trace") -> [resource_spans, scope_spans, span, event, link, status, traces_data]; +get_msg_containment("common") -> [any_value, array_value, instrumentation_scope, key_value, key_value_list]; get_msg_containment("resource") -> [resource]; get_msg_containment(P) -> error({gpb_error, {badproto, P}}). @@ -3858,7 +3713,7 @@ get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.TracesData">>) -> get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.Status">>) -> "trace"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.ScopeSpans">>) -> "trace"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.ResourceSpans">>) -> "trace"; -get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.InstrumentationLibrarySpans">>) -> "trace"; +get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess">>) -> "trace_service"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.KeyValueList">>) -> "common"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.Span.Event">>) -> "trace"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest">>) -> "trace_service"; @@ -3868,7 +3723,6 @@ get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.InstrumentationS get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.ArrayValue">>) -> "common"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.AnyValue">>) -> "common"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse">>) -> "trace_service"; -get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.InstrumentationLibrary">>) -> "common"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.Span.Link">>) -> "trace"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.Span">>) -> "trace"; get_proto_by_msg_name_as_fqbin(E) -> error({gpb_error, {badmsg, E}}). diff --git a/apps/opentelemetry_exporter/src/opentelemetry_logs_service.erl b/apps/opentelemetry_exporter/src/opentelemetry_logs_service.erl new file mode 100644 index 00000000..4f526747 --- /dev/null +++ b/apps/opentelemetry_exporter/src/opentelemetry_logs_service.erl @@ -0,0 +1,43 @@ +%%%------------------------------------------------------------------- +%% @doc Client module for grpc service opentelemetry.proto.collector.logs.v1.LogsService. +%% @end +%%%------------------------------------------------------------------- + +%% this module was generated and should not be modified manually + +-module(opentelemetry_logs_service). + +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("grpcbox/include/grpcbox.hrl"). + +-define(is_ctx(Ctx), is_tuple(Ctx) andalso element(1, Ctx) =:= ctx). + +-define(SERVICE, 'opentelemetry.proto.collector.logs.v1.LogsService'). +-define(PROTO_MODULE, 'opentelemetry_exporter_logs_service_pb'). +-define(MARSHAL_FUN(T), fun(I) -> ?PROTO_MODULE:encode_msg(I, T) end). +-define(UNMARSHAL_FUN(T), fun(I) -> ?PROTO_MODULE:decode_msg(I, T) end). +-define(DEF(Input, Output, MessageType), #grpcbox_def{service=?SERVICE, + message_type=MessageType, + marshal_fun=?MARSHAL_FUN(Input), + unmarshal_fun=?UNMARSHAL_FUN(Output)}). + +%% @doc Unary RPC +-spec export(opentelemetry_exporter_logs_service_pb:export_logs_service_request()) -> + {ok, opentelemetry_exporter_logs_service_pb:export_logs_service_response(), grpcbox:metadata()} | grpcbox_stream:grpc_error_response() | {error, any()}. +export(Input) -> + export(ctx:new(), Input, #{}). + +-spec export(ctx:t() | opentelemetry_exporter_logs_service_pb:export_logs_service_request(), opentelemetry_exporter_logs_service_pb:export_logs_service_request() | grpcbox_client:options()) -> + {ok, opentelemetry_exporter_logs_service_pb:export_logs_service_response(), grpcbox:metadata()} | grpcbox_stream:grpc_error_response() | {error, any()}. +export(Ctx, Input) when ?is_ctx(Ctx) -> + export(Ctx, Input, #{}); +export(Input, Options) -> + export(ctx:new(), Input, Options). + +-spec export(ctx:t(), opentelemetry_exporter_logs_service_pb:export_logs_service_request(), grpcbox_client:options()) -> + {ok, opentelemetry_exporter_logs_service_pb:export_logs_service_response(), grpcbox:metadata()} | grpcbox_stream:grpc_error_response() | {error, any()}. +export(Ctx, Input, Options) -> + grpcbox_client:unary(Ctx, <<"/opentelemetry.proto.collector.logs.v1.LogsService/Export">>, Input, ?DEF(export_logs_service_request, export_logs_service_response, <<"opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest">>), Options). + diff --git a/apps/opentelemetry_exporter/src/otel_otlp_common.erl b/apps/opentelemetry_exporter/src/otel_otlp_common.erl index 4750ee7d..41e81656 100644 --- a/apps/opentelemetry_exporter/src/otel_otlp_common.erl +++ b/apps/opentelemetry_exporter/src/otel_otlp_common.erl @@ -49,7 +49,7 @@ to_attributes(Attributes) -> to_attributes(otel_attributes:map(Attributes)). to_any_value(Value) when is_binary(Value) -> - %% TODO: there is a bytes_value type we don't currently support bc we assume string + %% TODO: there is a bytes_value type we don't currently support bc we assume utf8 string #{value => {string_value, Value}}; to_any_value(Value) when is_atom(Value) -> #{value => {string_value, to_binary(Value)}}; @@ -64,12 +64,20 @@ to_any_value(Value) when is_map(Value) -> to_any_value(Value) when is_tuple(Value) -> #{value => {array_value, to_array_value(tuple_to_list(Value))}}; to_any_value(Value) when is_list(Value) -> - case is_proplist(Value) of + case io_lib:printable_list(Value) of true -> - #{value => {kvlist_value, to_key_value_list(Value)}}; - false -> - #{value => {array_value, to_array_value(Value)}} - end. + #{value => {string_value, unicode:characters_to_binary(Value)}}; + _ -> + case is_proplist(Value) of + true -> + #{value => {kvlist_value, to_key_value_list(Value)}}; + false -> + #{value => {array_value, to_array_value(Value)}} + end + end; +to_any_value(Value) -> + #{value => {string_value, to_binary(io_lib:format("~p", [Value]))}}. + to_key_value_list(List) -> #{values => to_key_value_list(List, [])}. diff --git a/apps/opentelemetry_exporter/src/otel_otlp_logs.erl b/apps/opentelemetry_exporter/src/otel_otlp_logs.erl new file mode 100644 index 00000000..350012d2 --- /dev/null +++ b/apps/opentelemetry_exporter/src/otel_otlp_logs.erl @@ -0,0 +1,234 @@ +%%%------------------------------------------------------------------------ +%% Copyright 2022, OpenTelemetry Authors +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% @doc +%% @end +%%%------------------------------------------------------------------------- +-module(otel_otlp_logs). + +-export([to_proto/3]). + +%% for testing +-ifdef(TEST). +-export([to_proto_by_instrumentation_scope/1, + to_proto/1]). +-endif. + +-include_lib("kernel/include/logger.hrl"). +-include_lib("opentelemetry_api/include/opentelemetry.hrl"). +-include_lib("opentelemetry/include/otel_span.hrl"). +-include_lib("opentelemetry_experimental/src/otel_metrics.hrl"). + +-define(IS_STRING(String), + (is_list(String) orelse is_binary(String))). + +to_proto(Logs, Resource, Config) -> + InstrumentationScopeLogs = to_proto_by_instrumentation_scope(Logs, Config), + Attributes = otel_resource:attributes(Resource), + ResourceLogs = #{resource => #{attributes => otel_otlp_common:to_attributes(Attributes), + dropped_attributes_count => otel_attributes:dropped(Attributes)}, + scope_logs => InstrumentationScopeLogs}, + case otel_resource:schema_url(Resource) of + undefined -> + #{resource_logs => [ResourceLogs]}; + SchemaUrl -> + #{resource_logs => [ResourceLogs#{schema_url => SchemaUrl}]} + end. + + +to_proto_by_instrumentation_scope(Logs, Config) -> + ScopeLogs = logs_by_scope(Logs, Config), + maps:fold(fun(Scope, LogRecords, Acc) -> + [#{scope => otel_otlp_common:to_instrumentation_scope_proto(Scope), + log_records => LogRecords + %% schema_url => unicode:chardata() % = 3, optional + } | Acc] + end, [], ScopeLogs). + + +logs_by_scope(ScopeLogs, Config) -> + maps:fold(fun(InstrumentationScope, Logs, Acc) -> + LogRecords = [log_record(Log, Config) || Log <- Logs], + Acc#{InstrumentationScope => LogRecords} + end, #{}, ScopeLogs). + + +log_record(#{level := Level, + msg := Body, + meta := Metadata=#{time := ObservedTime}}, Config) -> + Time = opentelemetry:timestamp(), + {SeverityNumber, SeverityText} = level_to_severity(Level), + Body1 = format_msg(Body, Metadata, Config), + Attributes = maps:without([gl, time, report_cb], Metadata), + Attributes1 = maps:fold(fun(K, V, Acc) -> + [#{key => otel_otlp_common:to_binary(K), + value => otel_otlp_common:to_any_value(V)} | Acc] + end, [], Attributes), + DroppedAttributesCount = maps:size(Attributes) - length(Attributes1), + Flags = 0, + + LogRecord = case Metadata of + #{otel_trace_id := TraceId, + otel_span_id := SpanId} -> + #{trace_id => TraceId, + span_id => SpanId}; + _ -> + #{} + end, + + T = lists:reverse( + trim( + lists:reverse( + trim(Body1, false)), true)), + Msg = re:replace(T,",?\r?\n\s*",", ", + [{return,list}, global, unicode]), + + LogRecord#{time_unix_nano => Time, + observed_time_unix_nano => ObservedTime, + severity_number => SeverityNumber, + severity_text => SeverityText, + body => otel_otlp_common:to_any_value(Msg), + attributes => Attributes1, + dropped_attributes_count => DroppedAttributesCount, + flags => Flags + }. + +format_msg({string, Chardata}, Meta, Config) -> + format_msg({"~ts", [Chardata]}, Meta, Config); +format_msg({report,_}=Msg, Meta, #{report_cb := Fun}=Config) + when is_function(Fun,1); is_function(Fun,2) -> + format_msg(Msg, Meta#{report_cb => Fun}, maps:remove(report_cb,Config)); +format_msg({report, Report}, #{report_cb := Fun}=Meta, Config) when is_function(Fun, 1) -> + try Fun(Report) of + {Format, Args} when is_list(Format), is_list(Args) -> + format_msg({Format,Args},maps:remove(report_cb,Meta),Config); + Other -> + format_msg({"REPORT_CB/1 ERROR: ~0tp; Returned: ~0tp", + [Report,Other]},Meta,Config) + catch C:R:S -> + format_msg({"REPORT_CB/1 CRASH: ~0tp; Reason: ~0tp", + [Report,{C,R,logger:filter_stacktrace(?MODULE,S)}]}, + Meta,Config) + end; +format_msg({report, Report},#{report_cb := Fun}=Meta, Config) when is_function(Fun,2) -> + try Fun(Report,maps:with([depth,chars_limit,single_line], Config)) of + Chardata when ?IS_STRING(Chardata) -> + try chardata_to_list(Chardata) % already size limited by report_cb + catch _:_ -> + format_msg({"REPORT_CB/2 ERROR: ~0tp; Returned: ~0tp", + [Report,Chardata]},Meta,Config) + end; + Other -> + format_msg({"REPORT_CB/2 ERROR: ~0tp; Returned: ~0tp", + [Report,Other]},Meta,Config) + catch C:R:S -> + format_msg({"REPORT_CB/2 CRASH: ~0tp; Reason: ~0tp", + [Report,{C,R,logger:filter_stacktrace(?MODULE,S)}]}, + Meta,Config) + end; +format_msg({report,Report},Meta,Config) -> + format_msg({report,Report}, + Meta#{report_cb=>fun logger:format_report/1}, + Config); +format_msg(Msg, _Meta, #{depth := Depth, + chars_limit := CharsLimit, + single_line := Single}) -> + Opts = chars_limit_to_opts(CharsLimit), + format_msg(Msg, Depth, Opts, Single); +format_msg(Msg, _Meta, _) -> + Opts = chars_limit_to_opts(unlimited), + format_msg(Msg, unlimited, Opts, true). + + +format_msg({Format0,Args},Depth,Opts,Single) -> + try + Format1 = io_lib:scan_format(Format0, Args), + Format = reformat(Format1, Depth, Single), + io_lib:build_text(Format,Opts) + catch C:R:S -> + FormatError = "FORMAT ERROR: ~0tp - ~0tp", + case Format0 of + FormatError -> + %% already been here - avoid failing cyclically + erlang:raise(C,R,S); + _ -> + format_msg({FormatError,[Format0,Args]},Depth,Opts,Single) + end + end. + +trim([H|T],Rev) when H==$\s; H==$\r; H==$\n -> + trim(T,Rev); +trim([H|T],false) when is_list(H) -> + case trim(H,false) of + [] -> + trim(T,false); + TrimmedH -> + [TrimmedH|T] + end; +trim([H|T],true) when is_list(H) -> + case trim(lists:reverse(H),true) of + [] -> + trim(T,true); + TrimmedH -> + [lists:reverse(TrimmedH)|T] + end; +trim(String,_) -> + String. + +reformat(Format,unlimited,false) -> + Format; +reformat([#{control_char:=C}=M|T], Depth, true) when C =:= $p -> + [limit_depth(M#{width => 0}, Depth)|reformat(T, Depth, true)]; +reformat([#{control_char:=C}=M|T], Depth, true) when C =:= $P -> + [M#{width => 0}|reformat(T, Depth, true)]; +reformat([#{control_char:=C}=M|T], Depth, Single) when C =:= $p; C =:= $w -> + [limit_depth(M, Depth)|reformat(T, Depth, Single)]; +reformat([H|T], Depth, Single) -> + [H|reformat(T, Depth, Single)]; +reformat([], _, _) -> + []. + +limit_depth(M0, unlimited) -> + M0; +limit_depth(#{control_char:=C0, args:=Args}=M0, Depth) -> + C = C0 - ($a - $A), %To uppercase. + M0#{control_char:=C,args:=Args++[Depth]}. + +chars_limit_to_opts(unlimited) -> []; +chars_limit_to_opts(CharsLimit) -> [{chars_limit,CharsLimit}]. + +chardata_to_list(Chardata) -> + case unicode:characters_to_list(Chardata,unicode) of + List when is_list(List) -> + List; + Error -> + throw(Error) + end. + +level_to_severity(emergency)-> + {'SEVERITY_NUMBER_FATAL', <<"SEVERITY_NUMBER_FATAL">>}; +level_to_severity(alert)-> + {'SEVERITY_NUMBER_ERROR3', <<"SEVERITY_NUMBER_ERROR3">>}; +level_to_severity(critical)-> + {'SEVERITY_NUMBER_ERROR2', <<"SEVERITY_NUMBER_ERROR2">>}; +level_to_severity(error)-> + {'SEVERITY_NUMBER_ERROR', <<"SEVERITY_NUMBER_ERROR">>}; +level_to_severity(warning)-> + {'SEVERITY_NUMBER_WARN', <<"SEVERITY_NUMBER_WARN">>}; +level_to_severity(notice)-> + {'SEVERITY_NUMBER_INFO2', <<"SEVERITY_NUMBER_INFO2">>}; +level_to_severity(info)-> + {'SEVERITY_NUMBER_INFO', <<"SEVERITY_NUMBER_INFO">>}; +level_to_severity(debug)-> + {'SEVERITY_NUMBER_DEBUG', <<"SEVERITY_NUMBER_DEBUG">>}. diff --git a/config/otel-collector-config.yaml b/config/otel-collector-config.yaml index 8e6b5907..8fd85568 100644 --- a/config/otel-collector-config.yaml +++ b/config/otel-collector-config.yaml @@ -15,6 +15,8 @@ exporters: endpoint: "http://zipkin:9411/api/v2/spans" logging: loglevel: debug + sampling_initial: 1 + sampling_thereafter: 1 extensions: zpages: {} service: @@ -28,3 +30,7 @@ service: receivers: [otlp] processors: [batch] exporters: [logging] + logs: + receivers: [otlp] + processors: [batch] + exporters: [logging] diff --git a/config/sys.config b/config/sys.config index 18c775ee..012e7950 100644 --- a/config/sys.config +++ b/config/sys.config @@ -1,4 +1,9 @@ [ + {kernel, + [{logger_level, all}, + {logger, + [{handler, otel, otel_log_handler, #{}}]}]}, + {opentelemetry, [{processors, [{otel_batch_processor, #{exporter => {otel_exporter_stdout, []}} diff --git a/docker-compose.yml b/docker-compose.yml index 33f75f1b..833f5916 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,7 @@ services: ports: - 4317:4317 - 4318:4318 + - 55679:55679 volumes: - ./config/otel-collector-config.yaml:/conf/otel-collector-config.yaml links: diff --git a/rebar.config b/rebar.config index 998ad4f4..24d1bb78 100644 --- a/rebar.config +++ b/rebar.config @@ -1,13 +1,14 @@ {erl_opts, [debug_info]}. {deps, []}. -{shell, [{apps, [opentelemetry]}, +{shell, [{apps, [opentelemetry, + opentelemetry_experimental]}, {config, "config/sys.config"}]}. {project_plugins, [covertool, %% TODO: figure out why grpcbox_plugin fails to build in elixir github action %% it isn't needed often so fine to just leave it commented out for now - %% grpcbox_plugin, + grpcbox_plugin, erlfmt]}. {profiles, From b167ac096bb0be505eae1522f6fbfbc1c0dc3958 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Thu, 22 Sep 2022 16:03:43 -0600 Subject: [PATCH 2/8] add note in batch processor --- .../src/otel_batch_processor.erl | 1 + apps/opentelemetry_api/src/opentelemetry.erl | 2 +- .../src/otel_log_handler.erl | 26 ++++++++++++------- config/sys.config | 5 ---- docker-compose.yml | 1 - rebar.config | 2 +- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/apps/opentelemetry/src/otel_batch_processor.erl b/apps/opentelemetry/src/otel_batch_processor.erl index 93e69df1..d5d17f0c 100644 --- a/apps/opentelemetry/src/otel_batch_processor.erl +++ b/apps/opentelemetry/src/otel_batch_processor.erl @@ -188,6 +188,7 @@ exporting(enter, _OldState, Data=#data{exporting_timeout_ms=ExportingTimeout, {{timeout, export_spans}, SendInterval, export_spans}]} end; +%% TODO: we need to just check if `exporter=undefined' right? %% two hacks since we can't transition to a new state or send an action from `enter' exporting(state_timeout, no_exporter, Data) -> {next_state, idle, Data}; diff --git a/apps/opentelemetry_api/src/opentelemetry.erl b/apps/opentelemetry_api/src/opentelemetry.erl index 98af554f..071e4573 100644 --- a/apps/opentelemetry_api/src/opentelemetry.erl +++ b/apps/opentelemetry_api/src/opentelemetry.erl @@ -225,7 +225,7 @@ get_tracer(Name, Vsn, SchemaUrl) -> get_application_tracer(ModuleName) -> get_tracer(get_application(ModuleName)). --spec get_application_scope(module()) -> tracer(). +-spec get_application_scope(module()) -> instrumentation_scope() | undefined. get_application_scope(ModuleName) -> case get_application(ModuleName) of {Name, Vsn, SchemaUrl} -> diff --git a/apps/opentelemetry_experimental/src/otel_log_handler.erl b/apps/opentelemetry_experimental/src/otel_log_handler.erl index 973ac489..0a16115b 100644 --- a/apps/opentelemetry_experimental/src/otel_log_handler.erl +++ b/apps/opentelemetry_experimental/src/otel_log_handler.erl @@ -37,6 +37,15 @@ exporting/3, handle_event/3]). +-type config() :: #{id => logger:handler_id(), + regname := atom(), + config => term(), + level => logger:level() | all | none, + module => module(), + filter_default => log | stop, + filters => [{logger:filter_id(), logger:filter()}], + formatter => {module(), logger:formatter_config()}}. + -define(DEFAULT_CALL_TIMEOUT, 5000). -define(DEFAULT_MAX_QUEUE_SIZE, 2048). -define(DEFAULT_SCHEDULED_DELAY_MS, timer:seconds(5)). @@ -52,7 +61,6 @@ runner_pid :: pid() | undefined, max_queue_size :: integer() | infinity, exporting_timeout_ms :: integer(), - check_table_size_ms :: integer() | infinity, scheduled_delay_ms :: integer(), config :: #{}, @@ -62,7 +70,7 @@ start_link(RegName, Config) -> gen_statem:start_link({local, RegName}, ?MODULE, [RegName, Config], []). -spec adding_handler(Config) -> {ok, Config} | {error, Reason} when - Config :: logger:handler_config(), + Config :: config(), Reason :: term(). adding_handler(#{id := Id, module := Module}=Config) -> @@ -90,9 +98,9 @@ adding_handler(#{id := Id, -spec changing_config(SetOrUpdate, OldConfig, NewConfig) -> {ok,Config} | {error,Reason} when SetOrUpdate :: set | update, - OldConfig :: logger:handler_config(), - NewConfig :: logger:handler_config(), - Config :: logger:handler_config(), + OldConfig :: config(), + NewConfig :: config(), + Config :: config(), Reason :: term(). changing_config(SetOrUpdate, OldConfig, NewConfig=#{regname := Id}) -> gen_statem:call(Id, {changing_config, SetOrUpdate, OldConfig, NewConfig}). @@ -100,7 +108,7 @@ changing_config(SetOrUpdate, OldConfig, NewConfig=#{regname := Id}) -> %%%----------------------------------------------------------------- %%% Handler being removed -spec removing_handler(Config) -> ok when - Config :: logger:handler_config(). + Config :: config(). removing_handler(Config=#{regname := Id}) -> gen_statem:call(Id, {removing_handler, Config}). @@ -108,7 +116,7 @@ removing_handler(Config=#{regname := Id}) -> %%% Log a string or report -spec log(LogEvent, Config) -> ok when LogEvent :: logger:log_event(), - Config :: logger:handler_config(). + Config :: config(). log(LogEvent, _Config=#{regname := Id}) -> Scope = case LogEvent of #{meta := #{otel_scope := Scope0=#instrumentation_scope{}}} -> @@ -124,7 +132,7 @@ log(LogEvent, _Config=#{regname := Id}) -> %%%----------------------------------------------------------------- %%% Remove internal fields from configuration -spec filter_config(Config) -> Config when - Config :: logger:handler_config(). + Config :: config(). filter_config(Config=#{regname := Id}) -> gen_statem:call(Id, {filter_config, Config}). @@ -185,7 +193,7 @@ exporting(EventType, EventContent, Data) -> handle_event(EventType, EventContent, Data). handle_event({call, From}, {changing_config, _SetOrUpdate, _OldConfig, NewConfig}, Data) -> - {keep_state, Data=#data{config=NewConfig}, [{reply, From, NewConfig}]}; + {keep_state, Data#data{config=NewConfig}, [{reply, From, NewConfig}]}; handle_event({call, From}, {removing_handler, Config}, _Data) -> %% TODO: flush {keep_state_and_data, [{reply, From, Config}]}; diff --git a/config/sys.config b/config/sys.config index 012e7950..18c775ee 100644 --- a/config/sys.config +++ b/config/sys.config @@ -1,9 +1,4 @@ [ - {kernel, - [{logger_level, all}, - {logger, - [{handler, otel, otel_log_handler, #{}}]}]}, - {opentelemetry, [{processors, [{otel_batch_processor, #{exporter => {otel_exporter_stdout, []}} diff --git a/docker-compose.yml b/docker-compose.yml index 833f5916..33f75f1b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,6 @@ services: ports: - 4317:4317 - 4318:4318 - - 55679:55679 volumes: - ./config/otel-collector-config.yaml:/conf/otel-collector-config.yaml links: diff --git a/rebar.config b/rebar.config index 24d1bb78..8c43fc80 100644 --- a/rebar.config +++ b/rebar.config @@ -8,7 +8,7 @@ {project_plugins, [covertool, %% TODO: figure out why grpcbox_plugin fails to build in elixir github action %% it isn't needed often so fine to just leave it commented out for now - grpcbox_plugin, + %% grpcbox_plugin, erlfmt]}. {profiles, From c37fed2f08d962e34331bda1f0f652118fab341b Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Sat, 24 Sep 2022 15:07:46 -0600 Subject: [PATCH 3/8] bump junit report github action --- .github/workflows/erlang.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/erlang.yml b/.github/workflows/erlang.yml index 5f321161..e074f8d9 100644 --- a/.github/workflows/erlang.yml +++ b/.github/workflows/erlang.yml @@ -45,10 +45,10 @@ jobs: run: rebar3 ct --cover - name: Publish Test Report - uses: mikepenz/action-junit-report@v2 + uses: mikepenz/action-junit-report@v3 if: always() # always run even if the previous step fails with: - report_paths: '_build/test/logs/*/junit_report.xml' + report_paths: '**/_build/test/logs/*/junit_report.xml' - name: XRef run: rebar3 xref From a88e52e56131ef1b3cc0d582452b601e517949b7 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Sat, 24 Sep 2022 15:31:37 -0600 Subject: [PATCH 4/8] send report logs as structured data --- .../src/otel_otlp_logs.erl | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/apps/opentelemetry_exporter/src/otel_otlp_logs.erl b/apps/opentelemetry_exporter/src/otel_otlp_logs.erl index 350012d2..bebe0210 100644 --- a/apps/opentelemetry_exporter/src/otel_otlp_logs.erl +++ b/apps/opentelemetry_exporter/src/otel_otlp_logs.erl @@ -21,8 +21,7 @@ %% for testing -ifdef(TEST). --export([to_proto_by_instrumentation_scope/1, - to_proto/1]). +-export([to_proto_by_instrumentation_scope/2]). -endif. -include_lib("kernel/include/logger.hrl"). @@ -69,7 +68,18 @@ log_record(#{level := Level, meta := Metadata=#{time := ObservedTime}}, Config) -> Time = opentelemetry:timestamp(), {SeverityNumber, SeverityText} = level_to_severity(Level), - Body1 = format_msg(Body, Metadata, Config), + Body1 = case format_msg(Body, Metadata, Config) of + S when ?IS_STRING(S) -> + %% if body is a string, make it a single line + T = lists:reverse( + trim( + lists:reverse( + trim(S, false)), true)), + re:replace(T,",?\r?\n\s*",", ", + [{return,list}, global, unicode]); + M -> + M + end, Attributes = maps:without([gl, time, report_cb], Metadata), Attributes1 = maps:fold(fun(K, V, Acc) -> [#{key => otel_otlp_common:to_binary(K), @@ -87,18 +97,13 @@ log_record(#{level := Level, #{} end, - T = lists:reverse( - trim( - lists:reverse( - trim(Body1, false)), true)), - Msg = re:replace(T,",?\r?\n\s*",", ", - [{return,list}, global, unicode]), + LogRecord#{time_unix_nano => Time, observed_time_unix_nano => ObservedTime, severity_number => SeverityNumber, severity_text => SeverityText, - body => otel_otlp_common:to_any_value(Msg), + body => otel_otlp_common:to_any_value(Body1), attributes => Attributes1, dropped_attributes_count => DroppedAttributesCount, flags => Flags @@ -137,10 +142,11 @@ format_msg({report, Report},#{report_cb := Fun}=Meta, Config) when is_function(F [Report,{C,R,logger:filter_stacktrace(?MODULE,S)}]}, Meta,Config) end; -format_msg({report,Report},Meta,Config) -> - format_msg({report,Report}, - Meta#{report_cb=>fun logger:format_report/1}, - Config); +format_msg({report, Report}, _Meta, _Config) -> + %% report must be a map or key-value list so just return it as is + %% if the user doesn't supply a `report_cb' function. this makes + %% the LogRecord body also a list of key-value pairs + Report; format_msg(Msg, _Meta, #{depth := Depth, chars_limit := CharsLimit, single_line := Single}) -> From 0044259f1e83c9370fab802a681d9a9324af5da0 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Mon, 26 Sep 2022 05:23:09 -0600 Subject: [PATCH 5/8] xref: ignore generated logs protobuf module --- rebar.config | 1 + 1 file changed, 1 insertion(+) diff --git a/rebar.config b/rebar.config index 8c43fc80..3eb39e55 100644 --- a/rebar.config +++ b/rebar.config @@ -28,6 +28,7 @@ %% ignore generated modules {xref_ignores, [opentelemetry_exporter_trace_service_pb, opentelemetry_exporter_metrics_service_pb, + opentelemetry_exporter_logs_service_pb, opentelemetry_zipkin_pb]}. %% uncomment when dialyzer can be told to ignore the call to "unknown" From cea80585540ba3f38caa682699066b22a78691be Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Tue, 27 Sep 2022 12:07:10 -0600 Subject: [PATCH 6/8] proto encoding: properly check if binary/list is unicode string --- apps/opentelemetry_exporter/src/otel_otlp_common.erl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/opentelemetry_exporter/src/otel_otlp_common.erl b/apps/opentelemetry_exporter/src/otel_otlp_common.erl index 41e81656..5d659029 100644 --- a/apps/opentelemetry_exporter/src/otel_otlp_common.erl +++ b/apps/opentelemetry_exporter/src/otel_otlp_common.erl @@ -49,8 +49,12 @@ to_attributes(Attributes) -> to_attributes(otel_attributes:map(Attributes)). to_any_value(Value) when is_binary(Value) -> - %% TODO: there is a bytes_value type we don't currently support bc we assume utf8 string - #{value => {string_value, Value}}; + case io_lib:printable_unicode_list(Value) of + true -> + #{value => {string_value, Value}}; + _ -> + #{value => {bytes_value, Value}} + end; to_any_value(Value) when is_atom(Value) -> #{value => {string_value, to_binary(Value)}}; to_any_value(Value) when is_integer(Value) -> @@ -64,7 +68,7 @@ to_any_value(Value) when is_map(Value) -> to_any_value(Value) when is_tuple(Value) -> #{value => {array_value, to_array_value(tuple_to_list(Value))}}; to_any_value(Value) when is_list(Value) -> - case io_lib:printable_list(Value) of + case io_lib:printable_unicode_list(Value) of true -> #{value => {string_value, unicode:characters_to_binary(Value)}}; _ -> From d11a693fb3117d9eeefc0aa3a0ca1d3b0cf7cb3e Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Tue, 27 Sep 2022 14:39:13 -0600 Subject: [PATCH 7/8] attempt conversion to binary string to check if var is unicode string --- .../src/otel_otlp_common.erl | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/apps/opentelemetry_exporter/src/otel_otlp_common.erl b/apps/opentelemetry_exporter/src/otel_otlp_common.erl index 5d659029..32359b77 100644 --- a/apps/opentelemetry_exporter/src/otel_otlp_common.erl +++ b/apps/opentelemetry_exporter/src/otel_otlp_common.erl @@ -49,11 +49,12 @@ to_attributes(Attributes) -> to_attributes(otel_attributes:map(Attributes)). to_any_value(Value) when is_binary(Value) -> - case io_lib:printable_unicode_list(Value) of - true -> - #{value => {string_value, Value}}; - _ -> - #{value => {bytes_value, Value}} + case unicode:characters_to_binary(Value) of + {Failure, _, _} when Failure =:= error ; + Failure =:= incomplete -> + #{value => {bytes_value, Value}}; + String -> + #{value => {string_value, String}} end; to_any_value(Value) when is_atom(Value) -> #{value => {string_value, to_binary(Value)}}; @@ -68,20 +69,26 @@ to_any_value(Value) when is_map(Value) -> to_any_value(Value) when is_tuple(Value) -> #{value => {array_value, to_array_value(tuple_to_list(Value))}}; to_any_value(Value) when is_list(Value) -> - case io_lib:printable_unicode_list(Value) of - true -> - #{value => {string_value, unicode:characters_to_binary(Value)}}; - _ -> - case is_proplist(Value) of - true -> - #{value => {kvlist_value, to_key_value_list(Value)}}; - false -> - #{value => {array_value, to_array_value(Value)}} - end + try unicode:characters_to_binary(Value) of + {Failure, _, _} when Failure =:= error ; + Failure =:= incomplete -> + to_array_or_kvlist(Value); + String -> + #{value => {string_value, String}} + catch + _:_ -> + to_array_or_kvlist(Value) end; to_any_value(Value) -> #{value => {string_value, to_binary(io_lib:format("~p", [Value]))}}. +to_array_or_kvlist(Value) -> + case is_proplist(Value) of + true -> + #{value => {kvlist_value, to_key_value_list(Value)}}; + false -> + #{value => {array_value, to_array_value(Value)}} + end. to_key_value_list(List) -> #{values => to_key_value_list(List, [])}. From 8155c59c04333572938180a80924733f3354a03b Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Wed, 28 Sep 2022 16:15:24 -0600 Subject: [PATCH 8/8] try to get common test failures into the github actions checks --- .github/workflows/erlang.yml | 11 +++++++---- .github/workflows/report.yml | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/report.yml diff --git a/.github/workflows/erlang.yml b/.github/workflows/erlang.yml index e074f8d9..246f857a 100644 --- a/.github/workflows/erlang.yml +++ b/.github/workflows/erlang.yml @@ -1,3 +1,4 @@ +--- name: Erlang on: @@ -44,18 +45,20 @@ jobs: - name: Common Test tests run: rebar3 ct --cover - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 + - name: Upload Test Report + uses: actions/upload-artifact@v3 if: always() # always run even if the previous step fails with: - report_paths: '**/_build/test/logs/*/junit_report.xml' + name: junit-test-results + path: '**/_build/test/logs/*/junit_report.xml' + retention-days: 1 - name: XRef run: rebar3 xref - name: Covertool if: ${{ always() }} run: rebar3 covertool generate - - uses: codecov/codecov-action@v2 + - uses: codecov/codecov-action@v3 if: ${{ always() }} with: file: _build/test/covertool/opentelemetry.covertool.xml diff --git a/.github/workflows/report.yml b/.github/workflows/report.yml new file mode 100644 index 00000000..9423ebaa --- /dev/null +++ b/.github/workflows/report.yml @@ -0,0 +1,25 @@ +--- +name: report +on: + workflow_run: + workflows: [Erlang] + types: [completed] + +permissions: + checks: write + +jobs: + checks: + runs-on: ubuntu-latest + steps: + - name: Download Test Report + uses: dawidd6/action-download-artifact@v2 + with: + name: junit-test-results + workflow: ${{ github.event.workflow.id }} + run_id: ${{ github.event.workflow_run.id }} + - name: Publish Test Report + uses: mikepenz/action-junit-report@v3 + with: + commit: ${{github.event.workflow_run.head_sha}} + report_paths: '**/_build/test/logs/*/junit_report.xml'