diff --git a/CHANGELOG.md b/CHANGELOG.md index c81dcffd..81186844 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [SDK] +### [API] + +#### Added + +- [Instrumentation Scope replaces Instrumentation Library](https://github.com/open-telemetry/opentelemetry-erlang/pull/405) + +### [SDK] + +#### Added + +- [Instrumentation Scope replaces Instrumentation Library](https://github.com/open-telemetry/opentelemetry-erlang/pull/405) ### Fixed - [Allow custom text propagator to be configured via application env](https://github.com/open-telemetry/opentelemetry-erlang/pull/408) +### [Exporter] + +#### Added + +- [Instrumentation Scope replaces Instrumentation Library]() + ## SDK 1.0.5 - 2022-05-20 ### Fixed diff --git a/apps/opentelemetry/include/otel_span.hrl b/apps/opentelemetry/include/otel_span.hrl index ee48aafb..7c1cda2a 100644 --- a/apps/opentelemetry/include/otel_span.hrl +++ b/apps/opentelemetry/include/otel_span.hrl @@ -64,7 +64,7 @@ %% trace flags lowest bit is 1 but simply not propagated. is_recording :: boolean() | undefined, - instrumentation_library :: opentelemetry:instrumentation_library() | undefined + instrumentation_scope :: opentelemetry:instrumentation_scope() | undefined }). -record(span_limits, { diff --git a/apps/opentelemetry/src/otel_batch_processor.erl b/apps/opentelemetry/src/otel_batch_processor.erl index d0becd1f..055a0092 100644 --- a/apps/opentelemetry/src/otel_batch_processor.erl +++ b/apps/opentelemetry/src/otel_batch_processor.erl @@ -275,10 +275,10 @@ new_export_table(Name) -> {write_concurrency, true}, duplicate_bag, %% OpenTelemetry exporter protos group by the - %% instrumentation_library. So using instrumentation_library + %% instrumentation_scope. So using instrumentation_scope %% as the key means we can easily lookup all spans for - %% for each instrumentation_library and export together. - {keypos, #span.instrumentation_library}]). + %% for each instrumentation_scope and export together. + {keypos, #span.instrumentation_scope}]). export_spans(#data{exporter=Exporter, resource=Resource}) -> diff --git a/apps/opentelemetry/src/otel_simple_processor.erl b/apps/opentelemetry/src/otel_simple_processor.erl index 7fd1d4f5..b93890f9 100644 --- a/apps/opentelemetry/src/otel_simple_processor.erl +++ b/apps/opentelemetry/src/otel_simple_processor.erl @@ -164,10 +164,10 @@ new_export_table(Name) -> {write_concurrency, true}, duplicate_bag, %% OpenTelemetry exporter protos group by the - %% instrumentation_library. So using instrumentation_library + %% instrumentation_scope. So using instrumentation_scope %% as the key means we can easily lookup all spans for - %% for each instrumentation_library and export together. - {keypos, #span.instrumentation_library}]). + %% for each instrumentation_scope and export together. + {keypos, #span.instrumentation_scope}]). export_span(Span, #data{exporter=Exporter, resource=Resource}) -> diff --git a/apps/opentelemetry/src/otel_span_ets.erl b/apps/opentelemetry/src/otel_span_ets.erl index 213bb9d4..f17701b6 100644 --- a/apps/opentelemetry/src/otel_span_ets.erl +++ b/apps/opentelemetry/src/otel_span_ets.erl @@ -48,12 +48,12 @@ start_link(Opts) -> %% @doc Start a span and insert into the active span ets table. -spec start_span(otel_ctx:t(), opentelemetry:span_name(), otel_sampler:t(), otel_id_generator:t(), - otel_span:start_opts(), fun(), otel_tracer_server:instrumentation_library()) + otel_span:start_opts(), fun(), otel_tracer_server:instrumentation_scope()) -> opentelemetry:span_ctx(). -start_span(Ctx, Name, Sampler, IdGeneratorModule, Opts, Processors, InstrumentationLibrary) -> +start_span(Ctx, Name, Sampler, IdGeneratorModule, Opts, Processors, InstrumentationScope) -> case otel_span_utils:start_span(Ctx, Name, Sampler, IdGeneratorModule, Opts) of {SpanCtx=#span_ctx{is_recording=true}, Span=#span{}} -> - Span1 = Span#span{instrumentation_library=InstrumentationLibrary}, + Span1 = Span#span{instrumentation_scope=InstrumentationScope}, Span2 = Processors(Ctx, Span1), _ = storage_insert(Span2), SpanCtx; diff --git a/apps/opentelemetry/src/otel_tracer.hrl b/apps/opentelemetry/src/otel_tracer.hrl index 88019fb3..83fdc5c7 100644 --- a/apps/opentelemetry/src/otel_tracer.hrl +++ b/apps/opentelemetry/src/otel_tracer.hrl @@ -10,7 +10,7 @@ on_end_processors :: fun((opentelemetry:span()) -> boolean() | {error, term()}), sampler :: otel_sampler:t(), id_generator :: otel_id_generator:t(), - instrumentation_library :: otel_tracer_server:instrumentation_library() | undefined, + instrumentation_scope :: otel_tracer_server:instrumentation_scope() | undefined, telemetry_library :: otel_tracer_server:telemetry_library() | undefined, resource :: otel_resource:t() | undefined }). diff --git a/apps/opentelemetry/src/otel_tracer_default.erl b/apps/opentelemetry/src/otel_tracer_default.erl index c5796285..893f00e8 100644 --- a/apps/opentelemetry/src/otel_tracer_default.erl +++ b/apps/opentelemetry/src/otel_tracer_default.erl @@ -33,8 +33,8 @@ start_span(Ctx, {_, #tracer{on_start_processors=Processors, on_end_processors=OnEndProcessors, sampler=Sampler, id_generator=IdGeneratorModule, - instrumentation_library=InstrumentationLibrary}}, Name, Opts) -> - SpanCtx = otel_span_ets:start_span(Ctx, Name, Sampler, IdGeneratorModule, Opts, Processors, InstrumentationLibrary), + instrumentation_scope=InstrumentationScope}}, Name, Opts) -> + SpanCtx = otel_span_ets:start_span(Ctx, Name, Sampler, IdGeneratorModule, Opts, Processors, InstrumentationScope), SpanCtx#span_ctx{span_sdk={otel_span_ets, OnEndProcessors}}. -spec with_span(otel_ctx:t(), opentelemetry:tracer(), opentelemetry:span_name(), diff --git a/apps/opentelemetry/src/otel_tracer_server.erl b/apps/opentelemetry/src/otel_tracer_server.erl index eecba6f1..161a134e 100644 --- a/apps/opentelemetry/src/otel_tracer_server.erl +++ b/apps/opentelemetry/src/otel_tracer_server.erl @@ -35,9 +35,9 @@ -include("otel_span.hrl"). -type telemetry_library() :: #telemetry_library{}. --type instrumentation_library() :: #instrumentation_library{}. +-type instrumentation_scope() :: #instrumentation_scope{}. -export_type([telemetry_library/0, - instrumentation_library/0]). + instrumentation_scope/0]). -record(state, { @@ -100,15 +100,15 @@ handle_call({get_tracer, Name, Vsn, SchemaUrl}, _From, State=#state{shared_trace true -> {reply, {otel_tracer_noop, []}, State}; false -> - InstrumentationLibrary = opentelemetry:instrumentation_library(Name, Vsn, SchemaUrl), + InstrumentationScope = opentelemetry:instrumentation_scope(Name, Vsn, SchemaUrl), TracerTuple = {Tracer#tracer.module, - Tracer#tracer{instrumentation_library=InstrumentationLibrary}}, + Tracer#tracer{instrumentation_scope=InstrumentationScope}}, {reply, TracerTuple, State} end; -handle_call({get_tracer, InstrumentationLibrary}, _From, State=#state{shared_tracer=Tracer, +handle_call({get_tracer, InstrumentationScope}, _From, State=#state{shared_tracer=Tracer, deny_list=_DenyList}) -> {reply, {Tracer#tracer.module, - Tracer#tracer{instrumentation_library=InstrumentationLibrary}}, State}; + Tracer#tracer{instrumentation_scope=InstrumentationScope}}, State}; handle_call(force_flush, _From, State=#state{processors=Processors}) -> Reply = lists:foldl(fun(Processor, Result) -> case force_flush_(Processor) of diff --git a/apps/opentelemetry/test/opentelemetry_SUITE.erl b/apps/opentelemetry/test/opentelemetry_SUITE.erl index fef0df26..5d4c1d08 100644 --- a/apps/opentelemetry/test/opentelemetry_SUITE.erl +++ b/apps/opentelemetry/test/opentelemetry_SUITE.erl @@ -28,7 +28,7 @@ all() -> all_cases() -> [with_span, macros, child_spans, - update_span_data, tracer_instrumentation_library, tracer_previous_ctx, stop_temporary_app, + update_span_data, tracer_instrumentation_scope, tracer_previous_ctx, stop_temporary_app, reset_after, attach_ctx, default_sampler, non_recording_ets_table, root_span_sampling_always_on, root_span_sampling_always_off, record_but_not_sample, record_exception_works, record_exception_with_message_works, @@ -103,7 +103,7 @@ init_per_testcase(too_many_attributes, Config) -> Tid = ets:new(exported_spans, [public, bag]), otel_batch_processor:set_exporter(otel_exporter_tab, Tid), [{tid, Tid} | Config]; -init_per_testcase(tracer_instrumentation_library, Config) -> +init_per_testcase(tracer_instrumentation_scope, Config) -> application:set_env(opentelemetry, processors, [{otel_batch_processor, #{scheduled_delay_ms => 1}}]), {ok, _} = application:ensure_all_started(opentelemetry), %% adds an exporter for a new table @@ -139,34 +139,34 @@ end_per_testcase(_, _Config) -> ok. disable_auto_creation(_Config) -> - {_, #tracer{instrumentation_library=Library}} = opentelemetry:get_tracer( + {_, #tracer{instrumentation_scope=Library}} = opentelemetry:get_tracer( opentelemetry:get_application(kernel)), ?assertEqual(undefined, Library), ok. old_disable_auto_creation(_Config) -> - {_, #tracer{instrumentation_library=Library}} = opentelemetry:get_tracer( + {_, #tracer{instrumentation_scope=Library}} = opentelemetry:get_tracer( opentelemetry:get_application(kernel)), ?assertEqual(undefined, Library), ok. application_tracers(_Config) -> - {_, #tracer{instrumentation_library=Library}} = opentelemetry:get_tracer( + {_, #tracer{instrumentation_scope=Library}} = opentelemetry:get_tracer( opentelemetry:get_application(kernel)), - ?assertEqual(<<"kernel">>, Library#instrumentation_library.name), + ?assertEqual(<<"kernel">>, Library#instrumentation_scope.name), %% tracers are unique by name/version/schema_url NewKernelTracer = opentelemetry:get_tracer(kernel, <<"fake-version">>, undefined), - {_, #tracer{instrumentation_library=NewLibrary}} = NewKernelTracer, - ?assertEqual(<<"kernel">>, NewLibrary#instrumentation_library.name), - ?assertEqual(<<"fake-version">>, NewLibrary#instrumentation_library.version), - ?assertEqual(undefined, NewLibrary#instrumentation_library.schema_url), + {_, #tracer{instrumentation_scope=NewLibrary}} = NewKernelTracer, + ?assertEqual(<<"kernel">>, NewLibrary#instrumentation_scope.name), + ?assertEqual(<<"fake-version">>, NewLibrary#instrumentation_scope.version), + ?assertEqual(undefined, NewLibrary#instrumentation_scope.schema_url), Tracer = opentelemetry:get_tracer(kernel, <<"fake-version">>, <<"http://schema.org/myschema">>), - {_, #tracer{instrumentation_library=NewLibrary1}} = Tracer, - ?assertEqual(<<"kernel">>, NewLibrary1#instrumentation_library.name), - ?assertEqual(<<"fake-version">>, NewLibrary1#instrumentation_library.version), - ?assertEqual(<<"http://schema.org/myschema">>, NewLibrary1#instrumentation_library.schema_url), + {_, #tracer{instrumentation_scope=NewLibrary1}} = Tracer, + ?assertEqual(<<"kernel">>, NewLibrary1#instrumentation_scope.name), + ?assertEqual(<<"fake-version">>, NewLibrary1#instrumentation_scope.version), + ?assertEqual(<<"http://schema.org/myschema">>, NewLibrary1#instrumentation_scope.schema_url), ok. @@ -434,15 +434,15 @@ update_span_data(Config) -> ok. -tracer_instrumentation_library(Config) -> +tracer_instrumentation_scope(Config) -> Tid = ?config(tid, Config), TracerName = tracer1, TracerVsn = <<"1.0.0">>, - Tracer = {_, #tracer{instrumentation_library=IL}} = + Tracer = {_, #tracer{instrumentation_scope=IL}} = opentelemetry:get_tracer(TracerName, TracerVsn, "http://schema.org/myschema"), - ?assertMatch({instrumentation_library,<<"tracer1">>,<<"1.0.0">>,<<"http://schema.org/myschema">>}, + ?assertMatch({instrumentation_scope,<<"tracer1">>,<<"1.0.0">>,<<"http://schema.org/myschema">>}, IL), SpanCtx1 = otel_tracer:start_span(Tracer, <<"span-1">>, #{}), @@ -451,8 +451,8 @@ tracer_instrumentation_library(Config) -> [Span1] = assert_exported(Tid, SpanCtx1), - ?assertMatch({instrumentation_library,<<"tracer1">>,<<"1.0.0">>,<<"http://schema.org/myschema">>}, - Span1#span.instrumentation_library). + ?assertMatch({instrumentation_scope,<<"tracer1">>,<<"1.0.0">>,<<"http://schema.org/myschema">>}, + Span1#span.instrumentation_scope). %% check that ending a span results in the tracer setting the previous tracer context %% as the current active and not use the parent span ctx of the span being ended -- diff --git a/apps/opentelemetry_api/include/opentelemetry.hrl b/apps/opentelemetry_api/include/opentelemetry.hrl index 57dc21ff..5b025d4e 100644 --- a/apps/opentelemetry_api/include/opentelemetry.hrl +++ b/apps/opentelemetry_api/include/opentelemetry.hrl @@ -36,7 +36,7 @@ %% Holds information about the instrumentation library specified when %% getting a Tracer from the TracerProvider. --record(instrumentation_library, {name :: unicode:unicode_binary() | undefined, +-record(instrumentation_scope, {name :: unicode:unicode_binary() | undefined, version :: unicode:unicode_binary() | undefined, schema_url :: uri_string:uri_string() | undefined}). diff --git a/apps/opentelemetry_api/src/opentelemetry.erl b/apps/opentelemetry_api/src/opentelemetry.erl index f81952b3..bc4cc093 100644 --- a/apps/opentelemetry_api/src/opentelemetry.erl +++ b/apps/opentelemetry_api/src/opentelemetry.erl @@ -41,6 +41,7 @@ get_text_map_extractor/0, set_text_map_injector/1, get_text_map_injector/0, + instrumentation_scope/3, instrumentation_library/3, timestamp/0, timestamp_to_nano/1, @@ -60,7 +61,7 @@ -include_lib("kernel/include/logger.hrl"). -export_type([tracer/0, - instrumentation_library/0, + instrumentation_scope/0, trace_id/0, span_id/0, hex_trace_id/0, @@ -86,7 +87,7 @@ -type tracer() :: {module(), term()}. --type instrumentation_library() :: #instrumentation_library{}. +-type instrumentation_scope() :: #instrumentation_scope{}. -type trace_id() :: non_neg_integer(). -type span_id() :: non_neg_integer(). @@ -436,16 +437,21 @@ link_or_false(TraceId, SpanId, Attributes, TraceState) -> false end. -instrumentation_library(Name, Vsn, SchemaUrl) -> +instrumentation_scope(Name, Vsn, SchemaUrl) -> case name_to_binary(Name) of undefined -> undefined; BinaryName -> - #instrumentation_library{name=BinaryName, - version=vsn_to_binary(Vsn), - schema_url=schema_url_to_binary(SchemaUrl)} + #instrumentation_scope{name=BinaryName, + version=vsn_to_binary(Vsn), + schema_url=schema_url_to_binary(SchemaUrl)} end. +%% this function remains solely to keep backwards compatibility +%% but `instrumentation_scope' should be used instead +instrumentation_library(Name, Vsn, SchemaUrl) -> + instrumentation_scope(Name, Vsn, SchemaUrl). + %% schema_url is option, so set to undefined if its not a string schema_url_to_binary(SchemaUrl) when is_binary(SchemaUrl) ; is_list(SchemaUrl) -> unicode:characters_to_binary(SchemaUrl); diff --git a/apps/opentelemetry_experimental/src/otel_meter.hrl b/apps/opentelemetry_experimental/src/otel_meter.hrl index 15920f3b..3eaf19bf 100644 --- a/apps/opentelemetry_experimental/src/otel_meter.hrl +++ b/apps/opentelemetry_experimental/src/otel_meter.hrl @@ -1,5 +1,5 @@ -record(meter, {module :: module(), - instrumentation_library :: otel_tracer_server:instrumentation_library() | undefined, + instrumentation_scope :: otel_tracer_server:instrumentation_scope() | undefined, telemetry_library :: otel_tracer_server:telemetry_library() | undefined, resource :: otel_resource:t() | undefined}). -type meter() :: #meter{}. diff --git a/apps/opentelemetry_experimental/src/otel_meter_server.erl b/apps/opentelemetry_experimental/src/otel_meter_server.erl index fbbb5aac..c53e39ea 100644 --- a/apps/opentelemetry_experimental/src/otel_meter_server.erl +++ b/apps/opentelemetry_experimental/src/otel_meter_server.erl @@ -45,9 +45,9 @@ register_meter(Name, Vsn, #state{meter=Meter, true -> opentelemetry_experimental:set_meter(Name, {otel_meter_noop, []}); false -> - InstrumentationLibrary = opentelemetry:instrumentation_library(Name, Vsn, undefined), + InstrumentationScope = opentelemetry:instrumentation_scope(Name, Vsn, undefined), opentelemetry_experimental:set_meter(Name, {Meter#meter.module, - Meter#meter{instrumentation_library=InstrumentationLibrary}}) + Meter#meter{instrumentation_scope=InstrumentationScope}}) end. %% diff --git a/apps/opentelemetry_exporter/opentelemetry-proto b/apps/opentelemetry_exporter/opentelemetry-proto index b43e9b18..c5c8b280 160000 --- a/apps/opentelemetry_exporter/opentelemetry-proto +++ b/apps/opentelemetry_exporter/opentelemetry-proto @@ -1 +1 @@ -Subproject commit b43e9b18b76abf3ee040164b55b9c355217151f3 +Subproject commit c5c8b28012583fda55b0cb16f73a820722171d49 diff --git a/apps/opentelemetry_exporter/src/opentelemetry_exporter.erl b/apps/opentelemetry_exporter/src/opentelemetry_exporter.erl index 0818d830..d009ffc8 100644 --- a/apps/opentelemetry_exporter/src/opentelemetry_exporter.erl +++ b/apps/opentelemetry_exporter/src/opentelemetry_exporter.erl @@ -102,7 +102,7 @@ %% for testing -ifdef(TEST). --export([to_proto_by_instrumentation_library/1, +-export([to_proto_by_instrumentation_scope/1, to_proto/1, endpoints/2, merge_with_environment/1]). @@ -495,11 +495,11 @@ config_mapping() -> ]. tab_to_proto(Tab, Resource) -> - InstrumentationLibrarySpans = to_proto_by_instrumentation_library(Tab), + InstrumentationScopeSpans = to_proto_by_instrumentation_scope(Tab), Attributes = otel_resource:attributes(Resource), ResourceSpans = #{resource => #{attributes => to_attributes(otel_attributes:map(Attributes)), dropped_attributes_count => otel_attributes:dropped(Attributes)}, - instrumentation_library_spans => InstrumentationLibrarySpans}, + scope_spans => InstrumentationScopeSpans}, case otel_resource:schema_url(Resource) of undefined -> #{resource_spans => [ResourceSpans]}; @@ -507,32 +507,32 @@ tab_to_proto(Tab, Resource) -> #{resource_spans => [ResourceSpans#{schema_url => SchemaUrl}]} end. -to_proto_by_instrumentation_library(Tab) -> +to_proto_by_instrumentation_scope(Tab) -> Key = ets:first(Tab), - to_proto_by_instrumentation_library(Tab, Key). + to_proto_by_instrumentation_scope(Tab, Key). -to_proto_by_instrumentation_library(_Tab, '$end_of_table') -> +to_proto_by_instrumentation_scope(_Tab, '$end_of_table') -> []; -to_proto_by_instrumentation_library(Tab, InstrumentationLibrary) -> - InstrumentationLibrarySpans = lists:foldl(fun(Span, Acc) -> +to_proto_by_instrumentation_scope(Tab, InstrumentationScope) -> + InstrumentationScopeSpans = lists:foldl(fun(Span, Acc) -> [to_proto(Span) | Acc] - end, [], ets:lookup(Tab, InstrumentationLibrary)), - InstrumentationLibrarySpansProto = to_instrumentation_library_proto(InstrumentationLibrary), - [InstrumentationLibrarySpansProto#{spans => InstrumentationLibrarySpans} - | to_proto_by_instrumentation_library(Tab, ets:next(Tab, InstrumentationLibrary))]. + end, [], ets:lookup(Tab, InstrumentationScope)), + InstrumentationScopeSpansProto = to_instrumentation_scope_proto(InstrumentationScope), + [InstrumentationScopeSpansProto#{spans => InstrumentationScopeSpans} + | to_proto_by_instrumentation_scope(Tab, ets:next(Tab, InstrumentationScope))]. -to_instrumentation_library_proto(undefined) -> +to_instrumentation_scope_proto(undefined) -> #{}; -to_instrumentation_library_proto(#instrumentation_library{name=Name, +to_instrumentation_scope_proto(#instrumentation_scope{name=Name, version=Version, schema_url=undefined}) -> - #{instrumentation_library => #{name => Name, + #{instrumentation_scope => #{name => Name, version => Version}}; -to_instrumentation_library_proto(#instrumentation_library{name=Name, +to_instrumentation_scope_proto(#instrumentation_scope{name=Name, version=Version, schema_url=SchemaUrl}) -> - #{instrumentation_library => #{name => Name, + #{instrumentation_scope => #{name => Name, version => Version}, schema_url => SchemaUrl}. 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 d93cba66..c124ceb7 100644 --- a/apps/opentelemetry_exporter/src/opentelemetry_exporter_trace_service_pb.erl +++ b/apps/opentelemetry_exporter/src/opentelemetry_exporter_trace_service_pb.erl @@ -1,7 +1,7 @@ %% -*- coding: utf-8 -*- %% @private %% Automatically generated, do not edit -%% Generated by gpb_compile version 4.19.1 +%% Generated by gpb_compile version 4.19.5 %% Version source: file -module(opentelemetry_exporter_trace_service_pb). @@ -18,7 +18,6 @@ -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_span.SpanKind'/1, 'enum_value_by_symbol_span.SpanKind'/1]). --export(['enum_symbol_by_value_status.DeprecatedStatusCode'/1, 'enum_value_by_symbol_status.DeprecatedStatusCode'/1]). -export(['enum_symbol_by_value_status.StatusCode'/1, 'enum_value_by_symbol_status.StatusCode'/1]). -export([get_service_names/0]). -export([get_service_def/1]). @@ -52,9 +51,8 @@ %% enumerated types -type 'span.SpanKind'() :: 'SPAN_KIND_UNSPECIFIED' | 'SPAN_KIND_INTERNAL' | 'SPAN_KIND_SERVER' | 'SPAN_KIND_CLIENT' | 'SPAN_KIND_PRODUCER' | 'SPAN_KIND_CONSUMER'. --type 'status.DeprecatedStatusCode'() :: 'DEPRECATED_STATUS_CODE_OK' | 'DEPRECATED_STATUS_CODE_CANCELLED' | 'DEPRECATED_STATUS_CODE_UNKNOWN_ERROR' | 'DEPRECATED_STATUS_CODE_INVALID_ARGUMENT' | 'DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED' | 'DEPRECATED_STATUS_CODE_NOT_FOUND' | 'DEPRECATED_STATUS_CODE_ALREADY_EXISTS' | 'DEPRECATED_STATUS_CODE_PERMISSION_DENIED' | 'DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED' | 'DEPRECATED_STATUS_CODE_FAILED_PRECONDITION' | 'DEPRECATED_STATUS_CODE_ABORTED' | 'DEPRECATED_STATUS_CODE_OUT_OF_RANGE' | 'DEPRECATED_STATUS_CODE_UNIMPLEMENTED' | 'DEPRECATED_STATUS_CODE_INTERNAL_ERROR' | 'DEPRECATED_STATUS_CODE_UNAVAILABLE' | 'DEPRECATED_STATUS_CODE_DATA_LOSS' | 'DEPRECATED_STATUS_CODE_UNAUTHENTICATED'. -type 'status.StatusCode'() :: 'STATUS_CODE_UNSET' | 'STATUS_CODE_OK' | 'STATUS_CODE_ERROR'. --export_type(['span.SpanKind'/0, 'status.DeprecatedStatusCode'/0, 'status.StatusCode'/0]). +-export_type(['span.SpanKind'/0, 'status.StatusCode'/0]). %% message types -type export_trace_service_request() :: @@ -71,7 +69,14 @@ -type resource_spans() :: #{resource => resource(), % = 1, optional - instrumentation_library_spans => [instrumentation_library_spans()], % = 2, repeated + scope_spans => [scope_spans()], % = 2, repeated + instrumentation_library_spans => [instrumentation_library_spans()], % = 1000, repeated + schema_url => unicode:chardata() % = 3, optional + }. + +-type scope_spans() :: + #{scope => instrumentation_scope(), % = 1, optional + spans => [span()], % = 2, repeated schema_url => unicode:chardata() % = 3, optional }. @@ -115,8 +120,7 @@ }. -type status() :: - #{deprecated_code => 'DEPRECATED_STATUS_CODE_OK' | 'DEPRECATED_STATUS_CODE_CANCELLED' | 'DEPRECATED_STATUS_CODE_UNKNOWN_ERROR' | 'DEPRECATED_STATUS_CODE_INVALID_ARGUMENT' | 'DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED' | 'DEPRECATED_STATUS_CODE_NOT_FOUND' | 'DEPRECATED_STATUS_CODE_ALREADY_EXISTS' | 'DEPRECATED_STATUS_CODE_PERMISSION_DENIED' | 'DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED' | 'DEPRECATED_STATUS_CODE_FAILED_PRECONDITION' | 'DEPRECATED_STATUS_CODE_ABORTED' | 'DEPRECATED_STATUS_CODE_OUT_OF_RANGE' | 'DEPRECATED_STATUS_CODE_UNIMPLEMENTED' | 'DEPRECATED_STATUS_CODE_INTERNAL_ERROR' | 'DEPRECATED_STATUS_CODE_UNAVAILABLE' | 'DEPRECATED_STATUS_CODE_DATA_LOSS' | 'DEPRECATED_STATUS_CODE_UNAUTHENTICATED' | integer(), % = 1, optional, enum status.DeprecatedStatusCode - message => unicode:chardata(), % = 2, optional + #{message => unicode:chardata(), % = 2, optional code => 'STATUS_CODE_UNSET' | 'STATUS_CODE_OK' | 'STATUS_CODE_ERROR' | integer() % = 3, optional, enum status.StatusCode }. @@ -137,12 +141,12 @@ value => any_value() % = 2, optional }. --type string_key_value() :: - #{key => unicode:chardata(), % = 1, optional - value => unicode:chardata() % = 2, optional +-type instrumentation_library() :: + #{name => unicode:chardata(), % = 1, optional + version => unicode:chardata() % = 2, optional }. --type instrumentation_library() :: +-type instrumentation_scope() :: #{name => unicode:chardata(), % = 1, optional version => unicode:chardata() % = 2, optional }. @@ -152,14 +156,20 @@ 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, '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, 'string_key_value'/0, 'instrumentation_library'/0, 'resource'/0]). --type '$msg_name'() :: export_trace_service_request | export_trace_service_response | traces_data | resource_spans | instrumentation_library_spans | event | link | span | status | any_value | array_value | key_value_list | key_value | string_key_value | instrumentation_library | resource. --type '$msg'() :: export_trace_service_request() | export_trace_service_response() | traces_data() | resource_spans() | instrumentation_library_spans() | event() | link() | span() | status() | any_value() | array_value() | key_value_list() | key_value() | string_key_value() | instrumentation_library() | resource(). +-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(['$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 @@ -172,6 +182,7 @@ encode_msg(Msg, MsgName, Opts) -> export_trace_service_response -> encode_msg_export_trace_service_response(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); @@ -181,8 +192,8 @@ 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); - string_key_value -> encode_msg_string_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. @@ -230,10 +241,52 @@ encode_msg_resource_spans(#{} = M, Bin, TrUserData) -> _ -> Bin end, B2 = case M of - #{instrumentation_library_spans := F2} -> + #{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} -> + begin + TrF4 = id(F4, TrUserData), + case is_empty_string(TrF4) of + true -> B3; + false -> e_type_string(TrF4, <>, TrUserData) + end + end; + _ -> B3 + end. + +encode_msg_scope_spans(Msg, TrUserData) -> encode_msg_scope_spans(Msg, <<>>, TrUserData). + + +encode_msg_scope_spans(#{} = M, Bin, TrUserData) -> + B1 = case M of + #{scope := F1} -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> e_mfield_scope_spans_scope(TrF1, <>, TrUserData) + end + end; + _ -> Bin + end, + B2 = case M of + #{spans := F2} -> TrF2 = id(F2, TrUserData), if TrF2 == [] -> B1; - true -> e_field_resource_spans_instrumentation_library_spans(TrF2, B1, TrUserData) + true -> e_field_scope_spans_spans(TrF2, B1, TrUserData) end; _ -> B1 end, @@ -542,35 +595,25 @@ encode_msg_status(Msg, TrUserData) -> encode_msg_status(Msg, <<>>, TrUserData). encode_msg_status(#{} = M, Bin, TrUserData) -> B1 = case M of - #{deprecated_code := F1} -> + #{message := F1} -> begin TrF1 = id(F1, TrUserData), - if TrF1 =:= 'DEPRECATED_STATUS_CODE_OK'; TrF1 =:= 0 -> Bin; - true -> 'e_enum_status.DeprecatedStatusCode'(TrF1, <>, TrUserData) + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) end end; _ -> Bin end, - B2 = case M of - #{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, case M of - #{code := F3} -> + #{code := F2} -> begin - TrF3 = id(F3, TrUserData), - if TrF3 =:= 'STATUS_CODE_UNSET'; TrF3 =:= 0 -> B2; - true -> 'e_enum_status.StatusCode'(TrF3, <>, TrUserData) + TrF2 = id(F2, TrUserData), + if TrF2 =:= 'STATUS_CODE_UNSET'; TrF2 =:= 0 -> B1; + true -> 'e_enum_status.StatusCode'(TrF2, <>, TrUserData) end end; - _ -> B2 + _ -> B1 end. encode_msg_any_value(Msg, TrUserData) -> encode_msg_any_value(Msg, <<>>, TrUserData). @@ -643,12 +686,12 @@ encode_msg_key_value(#{} = M, Bin, TrUserData) -> _ -> B1 end. -encode_msg_string_key_value(Msg, TrUserData) -> encode_msg_string_key_value(Msg, <<>>, TrUserData). +encode_msg_instrumentation_library(Msg, TrUserData) -> encode_msg_instrumentation_library(Msg, <<>>, TrUserData). -encode_msg_string_key_value(#{} = M, Bin, TrUserData) -> +encode_msg_instrumentation_library(#{} = M, Bin, TrUserData) -> B1 = case M of - #{key := F1} -> + #{name := F1} -> begin TrF1 = id(F1, TrUserData), case is_empty_string(TrF1) of @@ -659,7 +702,7 @@ encode_msg_string_key_value(#{} = M, Bin, TrUserData) -> _ -> Bin end, case M of - #{value := F2} -> + #{version := F2} -> begin TrF2 = id(F2, TrUserData), case is_empty_string(TrF2) of @@ -670,10 +713,10 @@ encode_msg_string_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 @@ -747,17 +790,44 @@ e_mfield_resource_spans_resource(Msg, Bin, TrUserData) -> Bin2 = e_varint(byte_size(SubBin), Bin), <>. +e_mfield_resource_spans_scope_spans(Msg, Bin, TrUserData) -> + SubBin = encode_msg_scope_spans(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_resource_spans_scope_spans([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_resource_spans_scope_spans(id(Elem, TrUserData), Bin2, 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 = <>, + 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), + <>. + +e_mfield_scope_spans_spans(Msg, Bin, TrUserData) -> + SubBin = encode_msg_span(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_scope_spans_spans([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_scope_spans_spans(id(Elem, TrUserData), Bin2, 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), @@ -890,25 +960,6 @@ e_field_resource_attributes([], Bin, _TrUserData) -> Bin. 'e_enum_span.SpanKind'('SPAN_KIND_CONSUMER', Bin, _TrUserData) -> <>; 'e_enum_span.SpanKind'(V, Bin, _TrUserData) -> e_varint(V, Bin). -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_OK', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_CANCELLED', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNKNOWN_ERROR', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_INVALID_ARGUMENT', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_NOT_FOUND', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_ALREADY_EXISTS', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_PERMISSION_DENIED', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_FAILED_PRECONDITION', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_ABORTED', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_OUT_OF_RANGE', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNIMPLEMENTED', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_INTERNAL_ERROR', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNAVAILABLE', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_DATA_LOSS', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNAUTHENTICATED', Bin, _TrUserData) -> <>; -'e_enum_status.DeprecatedStatusCode'(V, Bin, _TrUserData) -> e_varint(V, Bin). - 'e_enum_status.StatusCode'('STATUS_CODE_UNSET', Bin, _TrUserData) -> <>; 'e_enum_status.StatusCode'('STATUS_CODE_OK', Bin, _TrUserData) -> <>; 'e_enum_status.StatusCode'('STATUS_CODE_ERROR', Bin, _TrUserData) -> <>; @@ -1056,6 +1107,7 @@ decode_msg_2_doit(export_trace_service_request, Bin, TrUserData) -> id(decode_ms decode_msg_2_doit(export_trace_service_response, Bin, TrUserData) -> id(decode_msg_export_trace_service_response(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); @@ -1065,8 +1117,8 @@ 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(string_key_value, Bin, TrUserData) -> id(decode_msg_string_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). @@ -1209,48 +1261,56 @@ 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), 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). -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_instrumentation_library_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}, +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}, S2 = if F@_1 == '$undef' -> S1; true -> S1#{resource => F@_1} end, - if R1 == '$undef' -> S2; - true -> S2#{instrumentation_library_spans => lists_reverse(R1, TrUserData)} + 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)} end; -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). +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). -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) -> +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) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_resource_spans_resource(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 18 -> d_field_resource_spans_instrumentation_library_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); + 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); _ -> case Key band 7 of - 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) + 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) end end; -dg_read_field_def_resource_spans(<<>>, 0, 0, _, F@_1, R1, F@_3, TrUserData) -> - S1 = #{schema_url => F@_3}, +dg_read_field_def_resource_spans(<<>>, 0, 0, _, F@_1, R1, R2, F@_4, TrUserData) -> + S1 = #{schema_url => F@_4}, S2 = if F@_1 == '$undef' -> S1; true -> S1#{resource => F@_1} end, - if R1 == '$undef' -> S2; - true -> S2#{instrumentation_library_spans => lists_reverse(R1, TrUserData)} + 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)} end. -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) -> +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) -> {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, @@ -1261,34 +1321,122 @@ 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_instrumentation_library_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, 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, TrUserData); -d_field_resource_spans_instrumentation_library_spans(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, 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) -> + {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). + +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, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData). + 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, 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) -> +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) -> {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, NewFValue, TrUserData). + dfp_read_field_def_resource_spans(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, 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_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_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) -> +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) -> 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, TrUserData). + dfp_read_field_def_resource_spans(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_group_resource_spans(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> +skip_group_resource_spans(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_resource_spans(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + dfp_read_field_def_resource_spans(Rest, 0, Z2, FNum, 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, 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). + +dfp_read_field_def_scope_spans(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_scope_spans_scope(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_scope_spans(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_scope_spans_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_scope_spans(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_scope_spans_schema_url(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_scope_spans(<<>>, 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#{spans => lists_reverse(R1, TrUserData)} + end; +dfp_read_field_def_scope_spans(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_scope_spans(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_scope_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_scope_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_scope_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_scope_spans_scope(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_scope_spans_spans(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_scope_spans_schema_url(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_scope_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_scope_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_scope_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_scope_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_scope_spans(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_scope_spans(<<>>, 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#{spans => lists_reverse(R1, TrUserData)} + end. + +d_field_scope_spans_scope(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_scope_spans_scope(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_scope_spans_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_spans(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_spans_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_scope_spans_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_scope_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_scope_spans(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData). + +d_field_scope_spans_schema_url(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_scope_spans_schema_url(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_scope_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_scope_spans(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_scope_spans(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_scope_spans(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_scope_spans(<<0:1, _:7, 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). + +skip_length_delimited_scope_spans(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_scope_spans(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_scope_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_scope_spans(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_scope_spans(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_scope_spans(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_scope_spans(<<_:32, 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). + +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). @@ -1764,63 +1912,56 @@ skip_32_span(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_ skip_64_span(<<_: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, F@_11, F@_12, F@_13, F@_14, F@_15, TrUserData) -> dfp_read_field_def_span(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, TrUserData). -decode_msg_status(Bin, TrUserData) -> dfp_read_field_def_status(Bin, 0, 0, 0, id('DEPRECATED_STATUS_CODE_OK', TrUserData), id(<<>>, TrUserData), id('STATUS_CODE_UNSET', TrUserData), TrUserData). +decode_msg_status(Bin, TrUserData) -> dfp_read_field_def_status(Bin, 0, 0, 0, id(<<>>, TrUserData), id('STATUS_CODE_UNSET', TrUserData), TrUserData). -dfp_read_field_def_status(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_status_deprecated_code(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_status(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_status_message(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_status(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_status_code(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_status(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #{deprecated_code => F@_1, message => F@_2, code => F@_3}; -dfp_read_field_def_status(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_status(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +dfp_read_field_def_status(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_status_message(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_status(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_status_code(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_status(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{message => F@_1, code => F@_2}; +dfp_read_field_def_status(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_status(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). -dg_read_field_def_status(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_status(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -dg_read_field_def_status(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> +dg_read_field_def_status(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_status(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_status(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> Key = X bsl N + Acc, case Key of - 8 -> d_field_status_deprecated_code(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 18 -> d_field_status_message(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 24 -> d_field_status_code(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_status_message(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 24 -> d_field_status_code(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 1 -> skip_64_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 2 -> skip_length_delimited_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 3 -> skip_group_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 5 -> skip_32_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + 0 -> skip_varint_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_status(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) end end; -dg_read_field_def_status(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #{deprecated_code => F@_1, message => F@_2, code => F@_3}. +dg_read_field_def_status(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{message => F@_1, code => F@_2}. -d_field_status_deprecated_code(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_status_deprecated_code(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_status_deprecated_code(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) -> - {NewFValue, RestF} = {id('d_enum_status.DeprecatedStatusCode'(begin <> = <<(X bsl N + Acc):32/unsigned-native>>, id(Res, TrUserData) end), TrUserData), Rest}, - dfp_read_field_def_status(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). - -d_field_status_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_status_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_status_message(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> +d_field_status_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_status_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_status_message(<<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_status(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + dfp_read_field_def_status(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). -d_field_status_code(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_status_code(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_status_code(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> +d_field_status_code(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_status_code(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_status_code(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> {NewFValue, RestF} = {id('d_enum_status.StatusCode'(begin <> = <<(X bsl N + Acc):32/unsigned-native>>, id(Res, TrUserData) end), TrUserData), Rest}, - dfp_read_field_def_status(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + dfp_read_field_def_status(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). -skip_varint_status(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_status(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -skip_varint_status(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_status(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +skip_varint_status(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_status(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_status(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_status(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -skip_length_delimited_status(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_status(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -skip_length_delimited_status(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> +skip_length_delimited_status(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_status(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_status(<<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_status(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + dfp_read_field_def_status(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). -skip_group_status(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> +skip_group_status(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_status(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + dfp_read_field_def_status(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). -skip_32_status(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_status(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +skip_32_status(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_status(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -skip_64_status(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_status(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +skip_64_status(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_status(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). decode_msg_any_value(Bin, TrUserData) -> dfp_read_field_def_any_value(Bin, 0, 0, 0, id('$undef', TrUserData), TrUserData). @@ -2105,57 +2246,6 @@ 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_string_key_value(Bin, TrUserData) -> dfp_read_field_def_string_key_value(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). - -dfp_read_field_def_string_key_value(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_string_key_value_key(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_string_key_value(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_string_key_value_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_string_key_value(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{key => F@_1, value => F@_2}; -dfp_read_field_def_string_key_value(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_string_key_value(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). - -dg_read_field_def_string_key_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_string_key_value(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_string_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_string_key_value_key(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 18 -> d_field_string_key_value_value(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_string_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_string_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_string_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_string_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_string_key_value(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) - end - end; -dg_read_field_def_string_key_value(<<>>, 0, 0, _, F@_1, F@_2, _) -> #{key => F@_1, value => F@_2}. - -d_field_string_key_value_key(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_string_key_value_key(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_string_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_string_key_value(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). - -d_field_string_key_value_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_string_key_value_value(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_string_key_value_value(<<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_string_key_value(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). - -skip_varint_string_key_value(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_string_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_string_key_value(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_string_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_length_delimited_string_key_value(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_string_key_value(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_string_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_string_key_value(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). - -skip_group_string_key_value(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_string_key_value(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). - -skip_32_string_key_value(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_string_key_value(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_64_string_key_value(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_string_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). 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); @@ -2207,6 +2297,57 @@ skip_32_instrumentation_library(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, Tr 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_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). + +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_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) -> + 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). + +skip_group_instrumentation_scope(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_instrumentation_scope(Rest, 0, Z2, FNum, F@_1, F@_2, 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_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). + 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); @@ -2274,25 +2415,6 @@ skip_64_resource(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> df 'd_enum_span.SpanKind'(5) -> 'SPAN_KIND_CONSUMER'; 'd_enum_span.SpanKind'(V) -> V. -'d_enum_status.DeprecatedStatusCode'(0) -> 'DEPRECATED_STATUS_CODE_OK'; -'d_enum_status.DeprecatedStatusCode'(1) -> 'DEPRECATED_STATUS_CODE_CANCELLED'; -'d_enum_status.DeprecatedStatusCode'(2) -> 'DEPRECATED_STATUS_CODE_UNKNOWN_ERROR'; -'d_enum_status.DeprecatedStatusCode'(3) -> 'DEPRECATED_STATUS_CODE_INVALID_ARGUMENT'; -'d_enum_status.DeprecatedStatusCode'(4) -> 'DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED'; -'d_enum_status.DeprecatedStatusCode'(5) -> 'DEPRECATED_STATUS_CODE_NOT_FOUND'; -'d_enum_status.DeprecatedStatusCode'(6) -> 'DEPRECATED_STATUS_CODE_ALREADY_EXISTS'; -'d_enum_status.DeprecatedStatusCode'(7) -> 'DEPRECATED_STATUS_CODE_PERMISSION_DENIED'; -'d_enum_status.DeprecatedStatusCode'(8) -> 'DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED'; -'d_enum_status.DeprecatedStatusCode'(9) -> 'DEPRECATED_STATUS_CODE_FAILED_PRECONDITION'; -'d_enum_status.DeprecatedStatusCode'(10) -> 'DEPRECATED_STATUS_CODE_ABORTED'; -'d_enum_status.DeprecatedStatusCode'(11) -> 'DEPRECATED_STATUS_CODE_OUT_OF_RANGE'; -'d_enum_status.DeprecatedStatusCode'(12) -> 'DEPRECATED_STATUS_CODE_UNIMPLEMENTED'; -'d_enum_status.DeprecatedStatusCode'(13) -> 'DEPRECATED_STATUS_CODE_INTERNAL_ERROR'; -'d_enum_status.DeprecatedStatusCode'(14) -> 'DEPRECATED_STATUS_CODE_UNAVAILABLE'; -'d_enum_status.DeprecatedStatusCode'(15) -> 'DEPRECATED_STATUS_CODE_DATA_LOSS'; -'d_enum_status.DeprecatedStatusCode'(16) -> 'DEPRECATED_STATUS_CODE_UNAUTHENTICATED'; -'d_enum_status.DeprecatedStatusCode'(V) -> V. - 'd_enum_status.StatusCode'(0) -> 'STATUS_CODE_UNSET'; 'd_enum_status.StatusCode'(1) -> 'STATUS_CODE_OK'; 'd_enum_status.StatusCode'(2) -> 'STATUS_CODE_ERROR'; @@ -2365,6 +2487,7 @@ merge_msgs(Prev, New, MsgName, Opts) -> export_trace_service_response -> merge_msg_export_trace_service_response(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); @@ -2374,8 +2497,8 @@ 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); - string_key_value -> merge_msg_string_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. @@ -2412,10 +2535,37 @@ merge_msg_resource_spans(PMsg, NMsg, TrUserData) -> {_, _} -> S1 end, S3 = case {PMsg, NMsg} of + {#{scope_spans := PFscope_spans}, #{scope_spans := NFscope_spans}} -> S2#{scope_spans => 'erlang_++'(PFscope_spans, NFscope_spans, TrUserData)}; + {_, #{scope_spans := NFscope_spans}} -> S2#{scope_spans => NFscope_spans}; + {#{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}} -> - S2#{instrumentation_library_spans => 'erlang_++'(PFinstrumentation_library_spans, NFinstrumentation_library_spans, TrUserData)}; - {_, #{instrumentation_library_spans := NFinstrumentation_library_spans}} -> S2#{instrumentation_library_spans => NFinstrumentation_library_spans}; - {#{instrumentation_library_spans := PFinstrumentation_library_spans}, _} -> S2#{instrumentation_library_spans => PFinstrumentation_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 + end. + +-compile({nowarn_unused_function,merge_msg_scope_spans/3}). +merge_msg_scope_spans(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 + {#{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 @@ -2587,19 +2737,14 @@ merge_msg_span(PMsg, NMsg, TrUserData) -> merge_msg_status(PMsg, NMsg, _) -> S1 = #{}, S2 = case {PMsg, NMsg} of - {_, #{deprecated_code := NFdeprecated_code}} -> S1#{deprecated_code => NFdeprecated_code}; - {#{deprecated_code := PFdeprecated_code}, _} -> S1#{deprecated_code => PFdeprecated_code}; + {_, #{message := NFmessage}} -> S1#{message => NFmessage}; + {#{message := PFmessage}, _} -> S1#{message => PFmessage}; _ -> S1 end, - S3 = case {PMsg, NMsg} of - {_, #{message := NFmessage}} -> S2#{message => NFmessage}; - {#{message := PFmessage}, _} -> S2#{message => PFmessage}; - _ -> S2 - end, case {PMsg, NMsg} of - {_, #{code := NFcode}} -> S3#{code => NFcode}; - {#{code := PFcode}, _} -> S3#{code => PFcode}; - _ -> S3 + {_, #{code := NFcode}} -> S2#{code => NFcode}; + {#{code := PFcode}, _} -> S2#{code => PFcode}; + _ -> S2 end. -compile({nowarn_unused_function,merge_msg_any_value/3}). @@ -2648,22 +2793,22 @@ merge_msg_key_value(PMsg, NMsg, TrUserData) -> {_, _} -> S2 end. --compile({nowarn_unused_function,merge_msg_string_key_value/3}). -merge_msg_string_key_value(PMsg, NMsg, _) -> +-compile({nowarn_unused_function,merge_msg_instrumentation_library/3}). +merge_msg_instrumentation_library(PMsg, NMsg, _) -> S1 = #{}, S2 = case {PMsg, NMsg} of - {_, #{key := NFkey}} -> S1#{key => NFkey}; - {#{key := PFkey}, _} -> S1#{key => PFkey}; + {_, #{name := NFname}} -> S1#{name => NFname}; + {#{name := PFname}, _} -> S1#{name => PFname}; _ -> S1 end, case {PMsg, NMsg} of - {_, #{value := NFvalue}} -> S2#{value => NFvalue}; - {#{value := PFvalue}, _} -> S2#{value => PFvalue}; + {_, #{version := NFversion}} -> S2#{version => NFversion}; + {#{version := PFversion}, _} -> S2#{version => PFversion}; _ -> S2 end. --compile({nowarn_unused_function,merge_msg_instrumentation_library/3}). -merge_msg_instrumentation_library(PMsg, NMsg, _) -> +-compile({nowarn_unused_function,merge_msg_instrumentation_scope/3}). +merge_msg_instrumentation_scope(PMsg, NMsg, _) -> S1 = #{}, S2 = case {PMsg, NMsg} of {_, #{name := NFname}} -> S1#{name => NFname}; @@ -2701,6 +2846,7 @@ verify_msg(Msg, MsgName, Opts) -> export_trace_service_response -> v_msg_export_trace_service_response(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); @@ -2710,8 +2856,8 @@ 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); - string_key_value -> v_msg_string_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, []) end. @@ -2773,19 +2919,29 @@ v_msg_resource_spans(#{} = M, Path, TrUserData) -> _ -> ok end, case M of - #{instrumentation_library_spans := F2} -> + #{scope_spans := F2} -> if is_list(F2) -> - _ = [v_msg_instrumentation_library_spans(Elem, [instrumentation_library_spans | Path], TrUserData) || Elem <- F2], + _ = [v_msg_scope_spans(Elem, [scope_spans | Path], TrUserData) || Elem <- F2], ok; - true -> mk_type_error({invalid_list_of, {msg, instrumentation_library_spans}}, F2, [instrumentation_library_spans | Path]) + true -> mk_type_error({invalid_list_of, {msg, scope_spans}}, F2, [scope_spans | Path]) end; _ -> ok end, case M of - #{schema_url := F3} -> v_type_string(F3, [schema_url | Path], TrUserData); + #{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); _ -> 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) @@ -2795,6 +2951,36 @@ v_msg_resource_spans(#{} = M, Path, TrUserData) -> v_msg_resource_spans(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), resource_spans}, M, Path); v_msg_resource_spans(X, Path, _TrUserData) -> mk_type_error({expected_msg, resource_spans}, X, Path). +-compile({nowarn_unused_function,v_msg_scope_spans/3}). +-dialyzer({nowarn_function,v_msg_scope_spans/3}). +v_msg_scope_spans(#{} = M, Path, TrUserData) -> + case M of + #{scope := F1} -> v_msg_instrumentation_scope(F1, [scope | 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 (scope) -> ok; + (spans) -> ok; + (schema_url) -> ok; + (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) + end, + maps:keys(M)), + ok; +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) -> @@ -3004,19 +3190,14 @@ v_msg_span(X, Path, _TrUserData) -> mk_type_error({expected_msg, span}, X, Path) -dialyzer({nowarn_function,v_msg_status/3}). v_msg_status(#{} = M, Path, TrUserData) -> case M of - #{deprecated_code := F1} -> 'v_enum_status.DeprecatedStatusCode'(F1, [deprecated_code | Path], TrUserData); - _ -> ok - end, - case M of - #{message := F2} -> v_type_string(F2, [message | Path], TrUserData); + #{message := F1} -> v_type_string(F1, [message | Path], TrUserData); _ -> ok end, case M of - #{code := F3} -> 'v_enum_status.StatusCode'(F3, [code | Path], TrUserData); + #{code := F2} -> 'v_enum_status.StatusCode'(F2, [code | Path], TrUserData); _ -> ok end, - lists:foreach(fun (deprecated_code) -> ok; - (message) -> ok; + lists:foreach(fun (message) -> ok; (code) -> ok; (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) end, @@ -3107,29 +3288,29 @@ 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_string_key_value/3}). --dialyzer({nowarn_function,v_msg_string_key_value/3}). -v_msg_string_key_value(#{} = M, Path, TrUserData) -> +-compile({nowarn_unused_function,v_msg_instrumentation_library/3}). +-dialyzer({nowarn_function,v_msg_instrumentation_library/3}). +v_msg_instrumentation_library(#{} = M, Path, TrUserData) -> case M of - #{key := F1} -> v_type_string(F1, [key | Path], TrUserData); + #{name := F1} -> v_type_string(F1, [name | Path], TrUserData); _ -> ok end, case M of - #{value := F2} -> v_type_string(F2, [value | Path], TrUserData); + #{version := F2} -> v_type_string(F2, [version | Path], TrUserData); _ -> ok end, - lists:foreach(fun (key) -> ok; - (value) -> ok; + lists:foreach(fun (name) -> ok; + (version) -> ok; (OtherKey) -> mk_type_error({extraneous_key, OtherKey}, M, Path) end, maps:keys(M)), ok; -v_msg_string_key_value(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [] -- maps:keys(M), string_key_value}, M, Path); -v_msg_string_key_value(X, Path, _TrUserData) -> mk_type_error({expected_msg, string_key_value}, X, Path). +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_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 @@ -3144,8 +3325,8 @@ v_msg_instrumentation_library(#{} = M, Path, TrUserData) -> 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). +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}). @@ -3183,28 +3364,6 @@ v_msg_resource(X, Path, _TrUserData) -> mk_type_error({expected_msg, resource}, 'v_enum_span.SpanKind'(V, _Path, _TrUserData) when -2147483648 =< V, V =< 2147483647, is_integer(V) -> ok; 'v_enum_span.SpanKind'(X, Path, _TrUserData) -> mk_type_error({invalid_enum, 'span.SpanKind'}, X, Path). --compile({nowarn_unused_function,'v_enum_status.DeprecatedStatusCode'/3}). --dialyzer({nowarn_function,'v_enum_status.DeprecatedStatusCode'/3}). -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_OK', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_CANCELLED', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNKNOWN_ERROR', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_INVALID_ARGUMENT', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_NOT_FOUND', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_ALREADY_EXISTS', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_PERMISSION_DENIED', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_FAILED_PRECONDITION', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_ABORTED', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_OUT_OF_RANGE', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNIMPLEMENTED', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_INTERNAL_ERROR', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNAVAILABLE', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_DATA_LOSS', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNAUTHENTICATED', _Path, _TrUserData) -> ok; -'v_enum_status.DeprecatedStatusCode'(V, _Path, _TrUserData) when -2147483648 =< V, V =< 2147483647, is_integer(V) -> ok; -'v_enum_status.DeprecatedStatusCode'(X, Path, _TrUserData) -> mk_type_error({invalid_enum, 'status.DeprecatedStatusCode'}, X, Path). - -compile({nowarn_unused_function,'v_enum_status.StatusCode'/3}). -dialyzer({nowarn_function,'v_enum_status.StatusCode'/3}). 'v_enum_status.StatusCode'('STATUS_CODE_UNSET', _Path, _TrUserData) -> ok; @@ -3304,31 +3463,18 @@ cons(Elem, Acc, _TrUserData) -> [Elem | Acc]. 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.DeprecatedStatusCode'}, - [{'DEPRECATED_STATUS_CODE_OK', 0}, - {'DEPRECATED_STATUS_CODE_CANCELLED', 1}, - {'DEPRECATED_STATUS_CODE_UNKNOWN_ERROR', 2}, - {'DEPRECATED_STATUS_CODE_INVALID_ARGUMENT', 3}, - {'DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED', 4}, - {'DEPRECATED_STATUS_CODE_NOT_FOUND', 5}, - {'DEPRECATED_STATUS_CODE_ALREADY_EXISTS', 6}, - {'DEPRECATED_STATUS_CODE_PERMISSION_DENIED', 7}, - {'DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED', 8}, - {'DEPRECATED_STATUS_CODE_FAILED_PRECONDITION', 9}, - {'DEPRECATED_STATUS_CODE_ABORTED', 10}, - {'DEPRECATED_STATUS_CODE_OUT_OF_RANGE', 11}, - {'DEPRECATED_STATUS_CODE_UNIMPLEMENTED', 12}, - {'DEPRECATED_STATUS_CODE_INTERNAL_ERROR', 13}, - {'DEPRECATED_STATUS_CODE_UNAVAILABLE', 14}, - {'DEPRECATED_STATUS_CODE_DATA_LOSS', 15}, - {'DEPRECATED_STATUS_CODE_UNAUTHENTICATED', 16}]}, {{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, 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 => instrumentation_library_spans, fnum => 2, rnum => 3, type => {msg, instrumentation_library_spans}, occurrence => repeated, 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 => []}]}, + {{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 => []}, @@ -3361,10 +3507,7 @@ get_msg_defs() -> #{name => links, fnum => 13, rnum => 14, type => {msg, link}, occurrence => repeated, opts => []}, #{name => dropped_links_count, fnum => 14, rnum => 15, type => uint32, occurrence => optional, opts => []}, #{name => status, fnum => 15, rnum => 16, type => {msg, status}, occurrence => optional, opts => []}]}, - {{msg, status}, - [#{name => deprecated_code, fnum => 1, rnum => 2, type => {enum, 'status.DeprecatedStatusCode'}, occurrence => optional, opts => [deprecated]}, - #{name => message, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}, - #{name => code, fnum => 3, rnum => 4, type => {enum, 'status.StatusCode'}, occurrence => optional, opts => []}]}, + {{msg, status}, [#{name => message, fnum => 2, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => code, fnum => 3, rnum => 3, type => {enum, 'status.StatusCode'}, occurrence => optional, opts => []}]}, {{msg, any_value}, [#{name => value, rnum => 2, fields => @@ -3379,8 +3522,8 @@ 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, string_key_value}, [#{name => key, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => value, fnum => 2, rnum => 3, type => string, 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, 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 => []}]}]. @@ -3389,6 +3532,7 @@ get_msg_names() -> export_trace_service_response, traces_data, resource_spans, + scope_spans, instrumentation_library_spans, event, link, @@ -3398,8 +3542,8 @@ get_msg_names() -> array_value, key_value_list, key_value, - string_key_value, instrumentation_library, + instrumentation_scope, resource]. @@ -3411,6 +3555,7 @@ get_msg_or_group_names() -> export_trace_service_response, traces_data, resource_spans, + scope_spans, instrumentation_library_spans, event, link, @@ -3420,12 +3565,12 @@ get_msg_or_group_names() -> array_value, key_value_list, key_value, - string_key_value, instrumentation_library, + instrumentation_scope, resource]. -get_enum_names() -> ['span.SpanKind', 'status.DeprecatedStatusCode', 'status.StatusCode']. +get_enum_names() -> ['span.SpanKind', 'status.StatusCode']. fetch_msg_def(MsgName) -> @@ -3447,7 +3592,12 @@ find_msg_def(export_trace_service_response) -> []; 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 => instrumentation_library_spans, fnum => 2, rnum => 3, type => {msg, instrumentation_library_spans}, occurrence => repeated, 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 => []}]; +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 => []}, @@ -3480,10 +3630,7 @@ find_msg_def(span) -> #{name => links, fnum => 13, rnum => 14, type => {msg, link}, occurrence => repeated, opts => []}, #{name => dropped_links_count, fnum => 14, rnum => 15, type => uint32, occurrence => optional, opts => []}, #{name => status, fnum => 15, rnum => 16, type => {msg, status}, occurrence => optional, opts => []}]; -find_msg_def(status) -> - [#{name => deprecated_code, fnum => 1, rnum => 2, type => {enum, 'status.DeprecatedStatusCode'}, occurrence => optional, opts => [deprecated]}, - #{name => message, fnum => 2, rnum => 3, type => string, occurrence => optional, opts => []}, - #{name => code, fnum => 3, rnum => 4, type => {enum, 'status.StatusCode'}, occurrence => optional, opts => []}]; +find_msg_def(status) -> [#{name => message, fnum => 2, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => code, fnum => 3, rnum => 3, type => {enum, 'status.StatusCode'}, occurrence => optional, opts => []}]; find_msg_def(any_value) -> [#{name => value, rnum => 2, fields => @@ -3498,42 +3645,22 @@ 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(string_key_value) -> [#{name => key, fnum => 1, rnum => 2, type => string, occurrence => optional, opts => []}, #{name => value, fnum => 2, rnum => 3, type => string, 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(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('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}]; -find_enum_def('status.DeprecatedStatusCode') -> - [{'DEPRECATED_STATUS_CODE_OK', 0}, - {'DEPRECATED_STATUS_CODE_CANCELLED', 1}, - {'DEPRECATED_STATUS_CODE_UNKNOWN_ERROR', 2}, - {'DEPRECATED_STATUS_CODE_INVALID_ARGUMENT', 3}, - {'DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED', 4}, - {'DEPRECATED_STATUS_CODE_NOT_FOUND', 5}, - {'DEPRECATED_STATUS_CODE_ALREADY_EXISTS', 6}, - {'DEPRECATED_STATUS_CODE_PERMISSION_DENIED', 7}, - {'DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED', 8}, - {'DEPRECATED_STATUS_CODE_FAILED_PRECONDITION', 9}, - {'DEPRECATED_STATUS_CODE_ABORTED', 10}, - {'DEPRECATED_STATUS_CODE_OUT_OF_RANGE', 11}, - {'DEPRECATED_STATUS_CODE_UNIMPLEMENTED', 12}, - {'DEPRECATED_STATUS_CODE_INTERNAL_ERROR', 13}, - {'DEPRECATED_STATUS_CODE_UNAVAILABLE', 14}, - {'DEPRECATED_STATUS_CODE_DATA_LOSS', 15}, - {'DEPRECATED_STATUS_CODE_UNAUTHENTICATED', 16}]; find_enum_def('status.StatusCode') -> [{'STATUS_CODE_UNSET', 0}, {'STATUS_CODE_OK', 1}, {'STATUS_CODE_ERROR', 2}]; find_enum_def(_) -> error. enum_symbol_by_value('span.SpanKind', Value) -> 'enum_symbol_by_value_span.SpanKind'(Value); -enum_symbol_by_value('status.DeprecatedStatusCode', Value) -> 'enum_symbol_by_value_status.DeprecatedStatusCode'(Value); enum_symbol_by_value('status.StatusCode', Value) -> 'enum_symbol_by_value_status.StatusCode'(Value). enum_value_by_symbol('span.SpanKind', Sym) -> 'enum_value_by_symbol_span.SpanKind'(Sym); -enum_value_by_symbol('status.DeprecatedStatusCode', Sym) -> 'enum_value_by_symbol_status.DeprecatedStatusCode'(Sym); enum_value_by_symbol('status.StatusCode', Sym) -> 'enum_value_by_symbol_status.StatusCode'(Sym). @@ -3552,43 +3679,6 @@ enum_value_by_symbol('status.StatusCode', Sym) -> 'enum_value_by_symbol_status.S 'enum_value_by_symbol_span.SpanKind'('SPAN_KIND_PRODUCER') -> 4; 'enum_value_by_symbol_span.SpanKind'('SPAN_KIND_CONSUMER') -> 5. -'enum_symbol_by_value_status.DeprecatedStatusCode'(0) -> 'DEPRECATED_STATUS_CODE_OK'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(1) -> 'DEPRECATED_STATUS_CODE_CANCELLED'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(2) -> 'DEPRECATED_STATUS_CODE_UNKNOWN_ERROR'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(3) -> 'DEPRECATED_STATUS_CODE_INVALID_ARGUMENT'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(4) -> 'DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(5) -> 'DEPRECATED_STATUS_CODE_NOT_FOUND'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(6) -> 'DEPRECATED_STATUS_CODE_ALREADY_EXISTS'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(7) -> 'DEPRECATED_STATUS_CODE_PERMISSION_DENIED'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(8) -> 'DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(9) -> 'DEPRECATED_STATUS_CODE_FAILED_PRECONDITION'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(10) -> 'DEPRECATED_STATUS_CODE_ABORTED'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(11) -> 'DEPRECATED_STATUS_CODE_OUT_OF_RANGE'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(12) -> 'DEPRECATED_STATUS_CODE_UNIMPLEMENTED'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(13) -> 'DEPRECATED_STATUS_CODE_INTERNAL_ERROR'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(14) -> 'DEPRECATED_STATUS_CODE_UNAVAILABLE'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(15) -> 'DEPRECATED_STATUS_CODE_DATA_LOSS'; -'enum_symbol_by_value_status.DeprecatedStatusCode'(16) -> 'DEPRECATED_STATUS_CODE_UNAUTHENTICATED'. - - -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_OK') -> 0; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_CANCELLED') -> 1; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNKNOWN_ERROR') -> 2; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_INVALID_ARGUMENT') -> 3; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_DEADLINE_EXCEEDED') -> 4; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_NOT_FOUND') -> 5; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_ALREADY_EXISTS') -> 6; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_PERMISSION_DENIED') -> 7; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_RESOURCE_EXHAUSTED') -> 8; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_FAILED_PRECONDITION') -> 9; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_ABORTED') -> 10; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_OUT_OF_RANGE') -> 11; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNIMPLEMENTED') -> 12; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_INTERNAL_ERROR') -> 13; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNAVAILABLE') -> 14; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_DATA_LOSS') -> 15; -'enum_value_by_symbol_status.DeprecatedStatusCode'('DEPRECATED_STATUS_CODE_UNAUTHENTICATED') -> 16. - 'enum_symbol_by_value_status.StatusCode'(0) -> 'STATUS_CODE_UNSET'; 'enum_symbol_by_value_status.StatusCode'(1) -> 'STATUS_CODE_OK'; 'enum_symbol_by_value_status.StatusCode'(2) -> 'STATUS_CODE_ERROR'. @@ -3656,6 +3746,7 @@ fqbin_to_msg_name(<<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceRe fqbin_to_msg_name(<<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse">>) -> export_trace_service_response; 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; @@ -3665,8 +3756,8 @@ 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.StringKeyValue">>) -> string_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}}). @@ -3675,6 +3766,7 @@ msg_name_to_fqbin(export_trace_service_request) -> <<"opentelemetry.proto.collec msg_name_to_fqbin(export_trace_service_response) -> <<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse">>; 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">>; @@ -3684,20 +3776,18 @@ 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(string_key_value) -> <<"opentelemetry.proto.common.v1.StringKeyValue">>; 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}}). fqbin_to_enum_name(<<"opentelemetry.proto.trace.v1.Span.SpanKind">>) -> 'span.SpanKind'; -fqbin_to_enum_name(<<"opentelemetry.proto.trace.v1.Status.DeprecatedStatusCode">>) -> 'status.DeprecatedStatusCode'; fqbin_to_enum_name(<<"opentelemetry.proto.trace.v1.Status.StatusCode">>) -> 'status.StatusCode'; fqbin_to_enum_name(E) -> error({gpb_error, {badenum, E}}). enum_name_to_fqbin('span.SpanKind') -> <<"opentelemetry.proto.trace.v1.Span.SpanKind">>; -enum_name_to_fqbin('status.DeprecatedStatusCode') -> <<"opentelemetry.proto.trace.v1.Status.DeprecatedStatusCode">>; enum_name_to_fqbin('status.StatusCode') -> <<"opentelemetry.proto.trace.v1.Status.StatusCode">>; enum_name_to_fqbin(E) -> error({gpb_error, {badenum, E}}). @@ -3730,8 +3820,8 @@ 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, span, event, link, status, traces_data]; -get_msg_containment("common") -> [any_value, array_value, instrumentation_library, key_value, key_value_list, string_key_value]; +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("resource") -> [resource]; get_msg_containment(P) -> error({gpb_error, {badproto, P}}). @@ -3758,7 +3848,7 @@ get_rpc_containment(P) -> error({gpb_error, {badproto, P}}). get_enum_containment("trace_service") -> []; -get_enum_containment("trace") -> ['span.SpanKind', 'status.DeprecatedStatusCode', 'status.StatusCode']; +get_enum_containment("trace") -> ['span.SpanKind', 'status.StatusCode']; get_enum_containment("common") -> []; get_enum_containment("resource") -> []; get_enum_containment(P) -> error({gpb_error, {badproto, P}}). @@ -3766,14 +3856,15 @@ get_enum_containment(P) -> error({gpb_error, {badproto, P}}). get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.trace.v1.TracesData">>) -> "trace"; 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.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"; get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.resource.v1.Resource">>) -> "resource"; -get_proto_by_msg_name_as_fqbin(<<"opentelemetry.proto.common.v1.StringKeyValue">>) -> "common"; 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.trace.v1.ExportTraceServiceResponse">>) -> "trace_service"; @@ -3789,7 +3880,6 @@ get_proto_by_service_name_as_fqbin(E) -> error({gpb_error, {badservice, E}}). get_proto_by_enum_name_as_fqbin(<<"opentelemetry.proto.trace.v1.Span.SpanKind">>) -> "trace"; get_proto_by_enum_name_as_fqbin(<<"opentelemetry.proto.trace.v1.Status.StatusCode">>) -> "trace"; -get_proto_by_enum_name_as_fqbin(<<"opentelemetry.proto.trace.v1.Status.DeprecatedStatusCode">>) -> "trace"; get_proto_by_enum_name_as_fqbin(E) -> error({gpb_error, {badenum, E}}). @@ -3802,10 +3892,10 @@ get_protos_by_pkg_name_as_fqbin(E) -> error({gpb_error, {badpkg, E}}). gpb_version_as_string() -> - "4.19.1". + "4.19.5". gpb_version_as_list() -> - [4,19,1]. + [4,19,5]. gpb_version_source() -> "file". diff --git a/apps/opentelemetry_exporter/src/opentelemetry_trace_service.erl b/apps/opentelemetry_exporter/src/opentelemetry_trace_service.erl index f620dd91..38634d98 100644 --- a/apps/opentelemetry_exporter/src/opentelemetry_trace_service.erl +++ b/apps/opentelemetry_exporter/src/opentelemetry_trace_service.erl @@ -3,7 +3,7 @@ %% @end %%%------------------------------------------------------------------- -%% this module was generated on 2020-07-02T14:11:39+00:00 and should not be modified manually +%% this module was generated and should not be modified manually -module(opentelemetry_trace_service). @@ -25,19 +25,19 @@ %% @doc Unary RPC -spec export(opentelemetry_exporter_trace_service_pb:export_trace_service_request()) -> - {ok, opentelemetry_exporter_trace_service_pb:export_trace_service_response(), grpcbox:metadata()} | grpcbox_stream:grpc_error_response(). + {ok, opentelemetry_exporter_trace_service_pb:export_trace_service_response(), grpcbox:metadata()} | grpcbox_stream:grpc_error_response() | {error, any()}. export(Input) -> export(ctx:new(), Input, #{}). -spec export(ctx:t() | opentelemetry_exporter_trace_service_pb:export_trace_service_request(), opentelemetry_exporter_trace_service_pb:export_trace_service_request() | grpcbox_client:options()) -> - {ok, opentelemetry_exporter_trace_service_pb:export_trace_service_response(), grpcbox:metadata()} | grpcbox_stream:grpc_error_response(). + {ok, opentelemetry_exporter_trace_service_pb:export_trace_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_trace_service_pb:export_trace_service_request(), grpcbox_client:options()) -> - {ok, opentelemetry_exporter_trace_service_pb:export_trace_service_response(), grpcbox:metadata()} | grpcbox_stream:grpc_error_response(). + {ok, opentelemetry_exporter_trace_service_pb:export_trace_service_response(), grpcbox:metadata()} | grpcbox_stream:grpc_error_response() | {error, any()}. export(Ctx, Input, Options) -> grpcbox_client:unary(Ctx, <<"/opentelemetry.proto.collector.trace.v1.TraceService/Export">>, Input, ?DEF(export_trace_service_request, export_trace_service_response, <<"opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest">>), Options). diff --git a/apps/opentelemetry_exporter/test/opentelemetry_exporter_SUITE.erl b/apps/opentelemetry_exporter/test/opentelemetry_exporter_SUITE.erl index 4267d569..06a6bb99 100644 --- a/apps/opentelemetry_exporter/test/opentelemetry_exporter_SUITE.erl +++ b/apps/opentelemetry_exporter/test/opentelemetry_exporter_SUITE.erl @@ -164,7 +164,7 @@ configuration(_Config) -> end. ets_instrumentation_info(_Config) -> - Tid = ets:new(span_tab, [duplicate_bag, {keypos, #span.instrumentation_library}]), + Tid = ets:new(span_tab, [duplicate_bag, {keypos, #span.instrumentation_scope}]), TraceId = otel_id_generator:generate_trace_id(), SpanId = otel_id_generator:generate_span_id(), @@ -185,7 +185,7 @@ ets_instrumentation_info(_Config) -> name = <<"event-2">>, attributes = [{<<"attr-3">>, <<"value-3">>}]}], Events1), attributes = otel_attributes:new([{<<"attr-2">>, <<"value-2">>}], 128, 128), - instrumentation_library=#instrumentation_library{name = <<"tracer-2">>, + instrumentation_scope=#instrumentation_scope{name = <<"tracer-2">>, version = <<"0.0.1">>}}, true = ets:insert(Tid, ParentSpan), @@ -205,18 +205,18 @@ ets_instrumentation_info(_Config) -> name = <<"event-2">>, attributes = [{<<"attr-3">>, <<"value-3">>}]}], Events2), attributes = otel_attributes:new([{<<"attr-2">>, <<"value-2">>}], 128, 128), - instrumentation_library=#instrumentation_library{name = <<"tracer-1">>, + instrumentation_scope=#instrumentation_scope{name = <<"tracer-1">>, version = <<"0.0.1">>}}, true = ets:insert(Tid, ChildSpan), - ?assertMatch([#{instrumentation_library := + ?assertMatch([#{instrumentation_scope := #{name := <<"tracer-1">>,version := <<"0.0.1">>}, spans := [_]}, - #{instrumentation_library := + #{instrumentation_scope := #{name := <<"tracer-2">>,version := <<"0.0.1">>}, spans := - [_]}], lists:sort(opentelemetry_exporter:to_proto_by_instrumentation_library(Tid))), + [_]}], lists:sort(opentelemetry_exporter:to_proto_by_instrumentation_scope(Tid))), ok. @@ -247,7 +247,7 @@ span_round_trip(_Config) -> ], 128, 128), status = #status{code=?OTEL_STATUS_OK, message = <<"">>}, - instrumentation_library = #instrumentation_library{name = <<"tracer-1">>, + instrumentation_scope = #instrumentation_scope{name = <<"tracer-1">>, version = <<"0.0.1">>}}, PbSpan = opentelemetry_exporter:to_proto(Span), @@ -275,7 +275,7 @@ verify_export(Config) -> {ok, State} = opentelemetry_exporter:init(#{protocol => Protocol, compression => Compression, endpoints => [{http, "localhost", Port, []}]}), - Tid = ets:new(span_tab, [duplicate_bag, {keypos, #span.instrumentation_library}]), + Tid = ets:new(span_tab, [duplicate_bag, {keypos, #span.instrumentation_scope}]), %% Tempoararily adding this because without this, we would face %% {error, no_endpoints} when attempt to export when we have more @@ -335,7 +335,7 @@ verify_export(Config) -> true = ets:insert(Tid, ChildSpan), ?assertMatch([#{spans := [_, _]}], - opentelemetry_exporter:to_proto_by_instrumentation_library(Tid)), + opentelemetry_exporter:to_proto_by_instrumentation_scope(Tid)), Resource = otel_resource_env_var:get_resource([]), ?assertEqual(otel_attributes:new([{<<"service.name">>,<<"my-test-service">>}, {<<"service.version">>,<<"98da75ea6d38724743bf42b45565049238d86b3f">>}], 128, 255), otel_resource:attributes(Resource)), diff --git a/docker-compose.yml b/docker-compose.yml index 07775ec4..c986503b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: otel: - image: otel/opentelemetry-collector-contrib-dev:954d0bbc8e80c88380a801443940c7c91779f928 + image: otel/opentelemetry-collector-contrib-dev:40d055d5a23eb00e3732c23be56442c9cb1e1684 command: ["--config=/conf/otel-collector-config.yaml"] privileged: true ports: