in plugins/core/propagating.go [117:160]
func (s *SpanContext) DecodeSW8(header string) error {
if header == "" {
return errEmptyHeader
}
hh := strings.Split(header, splitToken)
if len(hh) < headerLen {
return errors.WithMessagef(errInsufficientHeaderEntities, "header string: %s", header)
}
sample, err := strconv.ParseInt(hh[0], 10, 8)
if err != nil {
return errors.Errorf("str to int8 error %s", hh[0])
}
s.Sample = int8(sample)
s.TraceID, err = decodeBase64(hh[1])
if err != nil {
return errors.Wrap(err, "trace id parse error")
}
s.ParentSegmentID, err = decodeBase64(hh[2])
if err != nil {
return errors.Wrap(err, "parent segment id parse error")
}
s.ParentSpanID, err = stringConvertInt32(hh[3])
if err != nil {
return errors.Wrap(err, "parent span id parse error")
}
s.ParentService, err = decodeBase64(hh[4])
if err != nil {
return errors.Wrap(err, "parent service parse error")
}
s.ParentServiceInstance, err = decodeBase64(hh[5])
if err != nil {
return errors.Wrap(err, "parent service instance parse error")
}
s.ParentEndpoint, err = decodeBase64(hh[6])
if err != nil {
return errors.Wrap(err, "parent endpoint parse error")
}
s.AddressUsedAtClient, err = decodeBase64(hh[7])
if err != nil {
return errors.Wrap(err, "network address parse error")
}
s.Valid = true
return nil
}