You've already forked golang-saas-starter-kit
mirror of
https://github.com/raseels-repos/golang-saas-starter-kit.git
synced 2025-06-25 00:46:51 +02:00
Imported github.com/ardanlabs/service as base example project
This commit is contained in:
59
example-project/vendor/github.com/openzipkin/zipkin-go/model/traceid.go
generated
vendored
Normal file
59
example-project/vendor/github.com/openzipkin/zipkin-go/model/traceid.go
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// TraceID is a 128 bit number internally stored as 2x uint64 (high & low).
|
||||
// In case of 64 bit traceIDs, the value can be found in Low.
|
||||
type TraceID struct {
|
||||
High uint64
|
||||
Low uint64
|
||||
}
|
||||
|
||||
// Empty returns if TraceID has zero value.
|
||||
func (t TraceID) Empty() bool {
|
||||
return t.Low == 0 && t.High == 0
|
||||
}
|
||||
|
||||
// String outputs the 128-bit traceID as hex string.
|
||||
func (t TraceID) String() string {
|
||||
if t.High == 0 {
|
||||
return fmt.Sprintf("%016x", t.Low)
|
||||
}
|
||||
return fmt.Sprintf("%016x%016x", t.High, t.Low)
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
// MarshalJSON custom JSON serializer to export the TraceID in the required
|
||||
// zero padded hex representation.
|
||||
func (t TraceID) MarshalJSON() ([]byte, error) {
|
||||
return []byte(fmt.Sprintf("%q", t.String())), nil
|
||||
}
|
||||
|
||||
// UnmarshalJSON custom JSON deserializer to retrieve the traceID from the hex
|
||||
// encoded representation.
|
||||
func (t *TraceID) UnmarshalJSON(traceID []byte) error {
|
||||
if len(traceID) < 3 {
|
||||
return ErrValidTraceIDRequired
|
||||
}
|
||||
tID, err := TraceIDFromHex(string(traceID[1 : len(traceID)-1]))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*t = tID
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user