40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package wire
|
|
|
|
// ProtobufCarrier is a DelegatingCarrier that uses protocol buffers as the
|
|
// the underlying datastructure. The reason for implementing DelagatingCarrier
|
|
// is to allow for end users to serialize the underlying protocol buffers using
|
|
// jsonpb or any other serialization forms they want.
|
|
type ProtobufCarrier TracerState
|
|
|
|
// SetState set's the tracer state.
|
|
func (p *ProtobufCarrier) SetState(traceID, spanID uint64, sampled bool) {
|
|
p.TraceId = traceID
|
|
p.SpanId = spanID
|
|
p.Sampled = sampled
|
|
}
|
|
|
|
// State returns the tracer state.
|
|
func (p *ProtobufCarrier) State() (traceID, spanID uint64, sampled bool) {
|
|
traceID = p.TraceId
|
|
spanID = p.SpanId
|
|
sampled = p.Sampled
|
|
return traceID, spanID, sampled
|
|
}
|
|
|
|
// SetBaggageItem sets a baggage item.
|
|
func (p *ProtobufCarrier) SetBaggageItem(key, value string) {
|
|
if p.BaggageItems == nil {
|
|
p.BaggageItems = map[string]string{key: value}
|
|
return
|
|
}
|
|
|
|
p.BaggageItems[key] = value
|
|
}
|
|
|
|
// GetBaggage iterates over each baggage item and executes the callback with
|
|
// the key:value pair.
|
|
func (p *ProtobufCarrier) GetBaggage(f func(k, v string)) {
|
|
for k, v := range p.BaggageItems {
|
|
f(k, v)
|
|
}
|
|
}
|