mirror of
https://github.com/restic/restic.git
synced 2024-08-23 04:40:46 +02:00
115 lines
3.3 KiB
Go
115 lines
3.3 KiB
Go
|
// Copyright 2017, OpenCensus Authors
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
// See the License for the specific language governing permissions and
|
||
|
// limitations under the License.
|
||
|
|
||
|
package trace
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
// TraceID is a 16-byte identifier for a set of spans.
|
||
|
TraceID [16]byte
|
||
|
|
||
|
// SpanID is an 8-byte identifier for a single span.
|
||
|
SpanID [8]byte
|
||
|
)
|
||
|
|
||
|
func (t TraceID) String() string {
|
||
|
return fmt.Sprintf("%02x", t[:])
|
||
|
}
|
||
|
|
||
|
func (s SpanID) String() string {
|
||
|
return fmt.Sprintf("%02x", s[:])
|
||
|
}
|
||
|
|
||
|
// Annotation represents a text annotation with a set of attributes and a timestamp.
|
||
|
type Annotation struct {
|
||
|
Time time.Time
|
||
|
Message string
|
||
|
Attributes map[string]interface{}
|
||
|
}
|
||
|
|
||
|
// Attribute represents a key-value pair on a span, link or annotation.
|
||
|
// Construct with one of: BoolAttribute, Int64Attribute, or StringAttribute.
|
||
|
type Attribute struct {
|
||
|
key string
|
||
|
value interface{}
|
||
|
}
|
||
|
|
||
|
// BoolAttribute returns a bool-valued attribute.
|
||
|
func BoolAttribute(key string, value bool) Attribute {
|
||
|
return Attribute{key: key, value: value}
|
||
|
}
|
||
|
|
||
|
// Int64Attribute returns an int64-valued attribute.
|
||
|
func Int64Attribute(key string, value int64) Attribute {
|
||
|
return Attribute{key: key, value: value}
|
||
|
}
|
||
|
|
||
|
// StringAttribute returns a string-valued attribute.
|
||
|
func StringAttribute(key string, value string) Attribute {
|
||
|
return Attribute{key: key, value: value}
|
||
|
}
|
||
|
|
||
|
// LinkType specifies the relationship between the span that had the link
|
||
|
// added, and the linked span.
|
||
|
type LinkType int32
|
||
|
|
||
|
// LinkType values.
|
||
|
const (
|
||
|
LinkTypeUnspecified LinkType = iota // The relationship of the two spans is unknown.
|
||
|
LinkTypeChild // The current span is a child of the linked span.
|
||
|
LinkTypeParent // The current span is the parent of the linked span.
|
||
|
)
|
||
|
|
||
|
// Link represents a reference from one span to another span.
|
||
|
type Link struct {
|
||
|
TraceID TraceID
|
||
|
SpanID SpanID
|
||
|
Type LinkType
|
||
|
// Attributes is a set of attributes on the link.
|
||
|
Attributes map[string]interface{}
|
||
|
}
|
||
|
|
||
|
// MessageEventType specifies the type of message event.
|
||
|
type MessageEventType int32
|
||
|
|
||
|
// MessageEventType values.
|
||
|
const (
|
||
|
MessageEventTypeUnspecified MessageEventType = iota // Unknown event type.
|
||
|
MessageEventTypeSent // Indicates a sent RPC message.
|
||
|
MessageEventTypeRecv // Indicates a received RPC message.
|
||
|
)
|
||
|
|
||
|
// MessageEvent represents an event describing a message sent or received on the network.
|
||
|
type MessageEvent struct {
|
||
|
Time time.Time
|
||
|
EventType MessageEventType
|
||
|
MessageID int64
|
||
|
UncompressedByteSize int64
|
||
|
CompressedByteSize int64
|
||
|
}
|
||
|
|
||
|
// Status is the status of a Span.
|
||
|
type Status struct {
|
||
|
// Code is a status code. Zero indicates success.
|
||
|
//
|
||
|
// If Code will be propagated to Google APIs, it ideally should be a value from
|
||
|
// https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto .
|
||
|
Code int32
|
||
|
Message string
|
||
|
}
|