@@ -6,54 +6,44 @@ package request // import "go.opentelemetry.io/collector/pdata/xpdata/request"
6
6
import (
7
7
"context"
8
8
9
- "go.opentelemetry.io/otel/propagation "
9
+ "go.opentelemetry.io/otel/trace "
10
10
11
- pdataint "go.opentelemetry.io/collector/pdata/internal"
12
- "go.opentelemetry.io/collector/pdata/pcommon"
13
11
"go.opentelemetry.io/collector/pdata/xpdata/request/internal"
14
12
)
15
13
16
- // Default trace context propagator
17
- var tracePropagator = propagation.TraceContext {}
18
-
19
14
// encodeContext encodes the context into a map of strings.
20
15
func 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
24
30
}
25
31
26
32
// decodeContext decodes the context from the bytes map.
27
33
func decodeContext (rc * internal.RequestContext ) context.Context {
28
- if rc == nil || rc .SpanContextMap == nil {
34
+ if rc == nil || rc .SpanContext == nil {
29
35
return context .Background ()
30
36
}
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
+ }))
59
49
}
0 commit comments