vyvanse/vendor/github.com/openzipkin/zipkin-go-opentracing/types/traceid.go

41 lines
876 B
Go

package types
import (
"fmt"
"strconv"
)
// TraceID is a 128 bit number internally stored as 2x uint64 (high & low).
type TraceID struct {
High uint64
Low uint64
}
// TraceIDFromHex returns the TraceID from a Hex string.
func TraceIDFromHex(h string) (t TraceID, err error) {
if len(h) > 16 {
if t.High, err = strconv.ParseUint(h[0:len(h)-16], 16, 64); err != nil {
return
}
t.Low, err = strconv.ParseUint(h[len(h)-16:], 16, 64)
return
}
t.Low, err = strconv.ParseUint(h, 16, 64)
return
}
// ToHex outputs the 128-bit traceID as hex string.
func (t TraceID) ToHex() string {
if t.High == 0 {
return strconv.FormatUint(t.Low, 16)
}
return fmt.Sprintf(
"%016s%016s", strconv.FormatUint(t.High, 16), strconv.FormatUint(t.Low, 16),
)
}
// Empty returns if TraceID has zero value
func (t TraceID) Empty() bool {
return t.Low == 0 && t.High == 0
}