receiver/kafkareceiver/internal/unmarshaler/jaeger_unmarshaler.go (37 lines of code) (raw):

// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 package unmarshaler // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver/internal/unmarshaler" import ( "bytes" "github.com/gogo/protobuf/jsonpb" jaegerproto "github.com/jaegertracing/jaeger-idl/model/v1" "go.opentelemetry.io/collector/pdata/ptrace" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger" ) var ( _ ptrace.Unmarshaler = JaegerProtoSpanUnmarshaler{} _ ptrace.Unmarshaler = JaegerJSONSpanUnmarshaler{} ) type JaegerProtoSpanUnmarshaler struct{} func (j JaegerProtoSpanUnmarshaler) UnmarshalTraces(bytes []byte) (ptrace.Traces, error) { span := &jaegerproto.Span{} err := span.Unmarshal(bytes) if err != nil { return ptrace.NewTraces(), err } return jaegerSpanToTraces(span) } type JaegerJSONSpanUnmarshaler struct{} func (j JaegerJSONSpanUnmarshaler) UnmarshalTraces(data []byte) (ptrace.Traces, error) { span := &jaegerproto.Span{} err := jsonpb.Unmarshal(bytes.NewReader(data), span) if err != nil { return ptrace.NewTraces(), err } return jaegerSpanToTraces(span) } func jaegerSpanToTraces(span *jaegerproto.Span) (ptrace.Traces, error) { batch := jaegerproto.Batch{ Spans: []*jaegerproto.Span{span}, Process: span.Process, } return jaeger.ProtoToTraces([]*jaegerproto.Batch{&batch}) }