李恒道 发表于 2023-8-12 08:29:23

opentracing Inject函数分析

与https://bbs.tampermonkey.net.cn/thread-4904-1-1.html逻辑基本一致
主要调用carrier的Set函数存储Span数据

```go
func (t *TextMapPropagator) Inject(spanContext MockSpanContext, carrier interface{}) error {
        writer, ok := carrier.(opentracing.TextMapWriter)
        if !ok {
                return opentracing.ErrInvalidCarrier
        }
        // Ids:
        writer.Set(mockTextMapIdsPrefix+"traceid", strconv.Itoa(spanContext.TraceID))
        writer.Set(mockTextMapIdsPrefix+"spanid", strconv.Itoa(spanContext.SpanID))
        writer.Set(mockTextMapIdsPrefix+"sampled", fmt.Sprint(spanContext.Sampled))
        // Baggage:
        for baggageKey, baggageVal := range spanContext.Baggage {
                safeVal := baggageVal
                if t.HTTPHeaders {
                        safeVal = url.QueryEscape(baggageVal)
                }
                writer.Set(mockTextMapBaggagePrefix+baggageKey, safeVal)
        }
        return nil
}
```
页: [1]
查看完整版本: opentracing Inject函数分析