func FromString()

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
}