in header/header.go [78:104]
func FromString(s string) *Header {
ret := &Header{
SamplingDecision: Unknown,
AdditionalData: make(map[string]string),
}
parts := strings.Split(s, ";")
for i := range parts {
p := strings.TrimSpace(parts[i])
value, valid := valueFromKeyValuePair(p)
if valid {
switch {
case strings.HasPrefix(p, RootPrefix):
ret.TraceID = value
case strings.HasPrefix(p, ParentPrefix):
ret.ParentID = value
case strings.HasPrefix(p, SampledPrefix):
ret.SamplingDecision = samplingDecision(p)
case !strings.HasPrefix(p, SelfPrefix):
key, valid := keyFromKeyValuePair(p)
if valid {
ret.AdditionalData[key] = value
}
}
}
}
return ret
}