forked from open-telemetry/opentelemetry-go
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspan_context.go
More file actions
33 lines (27 loc) · 881 Bytes
/
span_context.go
File metadata and controls
33 lines (27 loc) · 881 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package otel2oc // import "go.opentelemetry.io/otel/bridge/opencensus/internal/otel2oc"
import (
octrace "go.opencensus.io/trace"
"go.opencensus.io/trace/tracestate"
"go.opentelemetry.io/otel/trace"
)
func SpanContext(sc trace.SpanContext) octrace.SpanContext {
var to octrace.TraceOptions
if sc.IsSampled() {
// OpenCensus doesn't expose functions to directly set sampled
to = 0x1
}
keys := sc.TraceState().Keys()
entries := make([]tracestate.Entry, 0, len(keys))
for _, key := range keys {
entries = append(entries, tracestate.Entry{key, sc.TraceState().Get(key)})
}
tsOc, _ := tracestate.New(nil, entries...)
return octrace.SpanContext{
TraceID: octrace.TraceID(sc.TraceID()),
SpanID: octrace.SpanID(sc.SpanID()),
TraceOptions: to,
Tracestate: tsOc,
}
}