@@ -6,54 +6,44 @@ package request // import "go.opentelemetry.io/collector/pdata/xpdata/request"
66import (
77 "context"
88
9- "go.opentelemetry.io/otel/propagation "
9+ "go.opentelemetry.io/otel/trace "
1010
11- pdataint "go.opentelemetry.io/collector/pdata/internal"
12- "go.opentelemetry.io/collector/pdata/pcommon"
1311 "go.opentelemetry.io/collector/pdata/xpdata/request/internal"
1412)
1513
16- // Default trace context propagator
17- var tracePropagator = propagation.TraceContext {}
18-
1914// encodeContext encodes the context into a map of strings.
2015func encodeContext (ctx context.Context ) internal.RequestContext {
21- carrier := pdataMapCarrier (pcommon .NewMap ())
22- tracePropagator .Inject (ctx , carrier )
23- return internal.RequestContext {SpanContextMap : * pdataint .GetOrigMap (pdataint .Map (carrier ))}
16+ rc := internal.RequestContext {}
17+ spanCtx := trace .SpanContextFromContext (ctx )
18+ if spanCtx .IsValid () {
19+ traceID := spanCtx .TraceID ()
20+ spanID := spanCtx .SpanID ()
21+ rc .SpanContext = & internal.SpanContext {
22+ TraceId : traceID [:],
23+ SpanId : spanID [:],
24+ TraceFlags : uint32 (spanCtx .TraceFlags ()),
25+ TraceState : spanCtx .TraceState ().String (),
26+ Remote : spanCtx .IsRemote (),
27+ }
28+ }
29+ return rc
2430}
2531
2632// decodeContext decodes the context from the bytes map.
2733func decodeContext (rc * internal.RequestContext ) context.Context {
28- if rc == nil || rc .SpanContextMap == nil {
34+ if rc == nil || rc .SpanContext == nil {
2935 return context .Background ()
3036 }
31- state := pdataint .StateMutable
32- carrier := pdataMapCarrier (pdataint .NewMap (& rc .SpanContextMap , & state ))
33- return tracePropagator .Extract (context .Background (), carrier )
34- }
35-
36- type pdataMapCarrier pcommon.Map
37-
38- var _ propagation.TextMapCarrier = pdataMapCarrier {}
39-
40- func (m pdataMapCarrier ) Get (key string ) string {
41- v , ok := pcommon .Map (m ).Get (key )
42- if ! ok || v .Type () != pcommon .ValueTypeStr {
43- return ""
44- }
45- return v .Str ()
46- }
47-
48- func (m pdataMapCarrier ) Set (key , value string ) {
49- pcommon .Map (m ).PutStr (key , value )
50- }
51-
52- func (m pdataMapCarrier ) Keys () []string {
53- keys := make ([]string , 0 , pcommon .Map (m ).Len ())
54- pcommon .Map (m ).Range (func (k string , _ pcommon.Value ) bool {
55- keys = append (keys , k )
56- return true
57- })
58- return keys
37+ traceID := trace.TraceID {}
38+ copy (traceID [:], rc .SpanContext .TraceId )
39+ spanID := trace.SpanID {}
40+ copy (spanID [:], rc .SpanContext .SpanId )
41+ traceState , _ := trace .ParseTraceState (rc .SpanContext .TraceState )
42+ return trace .ContextWithSpanContext (context .Background (), trace .NewSpanContext (trace.SpanContextConfig {
43+ TraceID : traceID ,
44+ SpanID : spanID ,
45+ TraceFlags : trace .TraceFlags (rc .SpanContext .TraceFlags ),
46+ TraceState : traceState ,
47+ Remote : rc .SpanContext .Remote ,
48+ }))
5949}
0 commit comments