12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package model
- import (
- "strconv"
- "time"
- )
- // RefType Kind
- const (
- RefTypeChildOf int8 = iota
- RefTypeFollowsFrom
- )
- // TagKind
- const (
- TagString int8 = iota
- TagInt
- TagBool
- TagFloat
- )
- // SpanRef describes causal relationship of the current span to another span (e.g. 'child-of')
- type SpanRef struct {
- RefType int8
- TraceID uint64
- SpanID uint64
- }
- // Tag span tag
- type Tag struct {
- Kind int8
- Key string
- Value interface{}
- }
- // Field log field
- type Field struct {
- Key string
- Value []byte
- }
- // Log span log
- type Log struct {
- Timestamp int64
- Fields []Field
- }
- // Span represents a named unit of work performed by a service.
- type Span struct {
- ServiceName string
- OperationName string
- TraceID uint64
- SpanID uint64
- ParentID uint64
- Env string
- StartTime time.Time
- Duration time.Duration
- References []SpanRef
- Tags map[string]interface{}
- Logs []Log
- }
- // TraceIDStr return hex format trace_id
- func (s *Span) TraceIDStr() string {
- return strconv.FormatUint(s.TraceID, 16)
- }
- // SpanIDStr return hex format span_id
- func (s *Span) SpanIDStr() string {
- return strconv.FormatUint(s.SpanID, 16)
- }
- // ParentIDStr return hex format parent_id
- func (s *Span) ParentIDStr() string {
- return strconv.FormatUint(s.ParentID, 16)
- }
- // IsServer span kind is server
- func (s *Span) IsServer() bool {
- kind, ok := s.Tags["span.kind"].(string)
- if !ok {
- return false
- }
- return kind == "server"
- }
- // IsError is error happend
- func (s *Span) IsError() bool {
- isErr, _ := s.Tags["error"].(bool)
- return isErr
- }
- // StringTag get string value from tag
- func (s *Span) StringTag(key string) string {
- val, _ := s.Tags[key].(string)
- return val
- }
|