func generateTraceIDHeaderValue()

in xray/handler.go [147:170]


func generateTraceIDHeaderValue(seg *Segment, traceHeader *header.Header) string {
	seg.Lock()
	defer seg.Unlock()

	var respHeader bytes.Buffer
	respHeader.WriteString("Root=")
	respHeader.WriteString(seg.TraceID)

	if traceHeader.ParentID != "" {
		respHeader.WriteString(";Parent=")
		respHeader.WriteString(traceHeader.ParentID)
	}

	if traceHeader.SamplingDecision == header.NotSampled {
		respHeader.WriteString(";Sampled=0")
	} else if traceHeader.SamplingDecision == header.Sampled {
		respHeader.WriteString(";Sampled=1")
	} else if traceHeader.SamplingDecision == header.Requested {
		respHeader.WriteString(";Sampled=")
		respHeader.WriteString(strconv.Itoa(btoi(seg.Sampled)))
	}

	return respHeader.String()
}