File size: 676 Bytes
6380833 | 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 34 35 36 37 38 39 | package otelx
import (
"encoding/base64"
"encoding/json"
"go.opentelemetry.io/otel/trace"
)
const OTelSpanContextKey = "otel.span.context"
func SerializeSpanContext(c trace.SpanContext) ([]byte, error) {
b, err := c.MarshalJSON()
if err != nil {
return nil, err
}
s := base64.StdEncoding.EncodeToString(b)
return []byte(s), nil
}
func DeserializeSpanContext(b []byte) (*trace.SpanContext, error) {
b, err := base64.StdEncoding.DecodeString(string(b))
if err != nil {
return nil, err
}
config := trace.SpanContextConfig{}
err = json.Unmarshal(b, &config)
if err != nil {
return nil, err
}
ctx := trace.NewSpanContext(config)
return &ctx, nil
}
|