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 }