52 lines
1.9 KiB
Go
52 lines
1.9 KiB
Go
package tracer
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace"
|
|
)
|
|
|
|
// Propagator implementations should be able to inject and extract
|
|
// SpanContexts into an implementation specific carrier.
|
|
type Propagator interface {
|
|
// Inject takes the SpanContext and injects it into the carrier.
|
|
Inject(context ddtrace.SpanContext, carrier interface{}) error
|
|
|
|
// Extract returns the SpanContext from the given carrier.
|
|
Extract(carrier interface{}) (ddtrace.SpanContext, error)
|
|
}
|
|
|
|
// TextMapWriter allows setting key/value pairs of strings on the underlying
|
|
// data structure. Carriers implementing TextMapWriter are compatible to be
|
|
// used with Datadog's TextMapPropagator.
|
|
type TextMapWriter interface {
|
|
// Set sets the given key/value pair.
|
|
Set(key, val string)
|
|
}
|
|
|
|
// TextMapReader allows iterating over sets of key/value pairs. Carriers implementing
|
|
// TextMapReader are compatible to be used with Datadog's TextMapPropagator.
|
|
type TextMapReader interface {
|
|
// ForeachKey iterates over all keys that exist in the underlying
|
|
// carrier. It takes a callback function which will be called
|
|
// using all key/value pairs as arguments. ForeachKey will return
|
|
// the first error returned by the handler.
|
|
ForeachKey(handler func(key, val string) error) error
|
|
}
|
|
|
|
var (
|
|
// ErrInvalidCarrier is returned when the carrier provided to the propagator
|
|
// does not implemented the correct interfaces.
|
|
ErrInvalidCarrier = errors.New("invalid carrier")
|
|
|
|
// ErrInvalidSpanContext is returned when the span context found in the
|
|
// carrier is not of the expected type.
|
|
ErrInvalidSpanContext = errors.New("invalid span context")
|
|
|
|
// ErrSpanContextCorrupted is returned when there was a problem parsing
|
|
// the information found in the carrier.
|
|
ErrSpanContextCorrupted = errors.New("span context corrupted")
|
|
|
|
// ErrSpanContextNotFound represents missing information in the given carrier.
|
|
ErrSpanContextNotFound = errors.New("span context not found")
|
|
)
|