You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.3 KiB
57 lines
1.3 KiB
package rpc |
|
|
|
import ( |
|
"strconv" |
|
|
|
"go-common/library/net/trace" |
|
) |
|
|
|
// TraceInfo propagate trace propagate gorpc call |
|
type TraceInfo struct { |
|
ID uint64 |
|
SpanID uint64 |
|
ParentID uint64 |
|
Level int32 |
|
Sampled bool |
|
Caller string |
|
Title string |
|
Time int64 |
|
} |
|
|
|
// Set implement trace.Carrier |
|
func (i *TraceInfo) Set(key string, val string) { |
|
switch key { |
|
case trace.KeyTraceID: |
|
i.ID, _ = strconv.ParseUint(val, 10, 64) |
|
case trace.KeyTraceSpanID: |
|
i.SpanID, _ = strconv.ParseUint(val, 10, 64) |
|
case trace.KeyTraceParentID: |
|
i.ParentID, _ = strconv.ParseUint(val, 10, 64) |
|
case trace.KeyTraceSampled: |
|
i.Sampled, _ = strconv.ParseBool(val) |
|
case trace.KeyTraceLevel: |
|
lv, _ := strconv.Atoi(val) |
|
i.Level = int32(lv) |
|
case trace.KeyTraceCaller: |
|
i.Caller = val |
|
} |
|
} |
|
|
|
// Get implement trace.Carrier |
|
func (i *TraceInfo) Get(key string) string { |
|
switch key { |
|
case trace.KeyTraceID: |
|
return strconv.FormatUint(i.ID, 10) |
|
case trace.KeyTraceSpanID: |
|
return strconv.FormatUint(i.SpanID, 10) |
|
case trace.KeyTraceParentID: |
|
return strconv.FormatUint(i.ParentID, 10) |
|
case trace.KeyTraceSampled: |
|
return strconv.FormatBool(i.Sampled) |
|
case trace.KeyTraceLevel: |
|
return strconv.Itoa(int(i.Level)) |
|
case trace.KeyTraceCaller: |
|
return i.Caller |
|
} |
|
return "" |
|
}
|
|
|