You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-11-23 22:34:47 +02:00
Add propagator interface and W3C propagator (#85)
* add propagation api. * add http propagator interface and w3c propagator implementation. * remove Extract api from trace. * remove Extract interface for tracer. * fix copyright. * fix variable names and comments. * move inject/extract out of trace. * replace INVALID_SPAN_CONTEXT with EmptySpanContext function. * fix tag.Map. * make carrier as interface instead of http.Request. * rename structs and update doc comments.. * add doc.go * update doc. * add noop propagator. * add new propagation api with Supplier interface. - added Default Tracer which simply propagates SpanContext. - added CopyOfRemote option to simply create remote span. * remove old propagator. * rename propagator to TextFormatPropagator. * rename default tracer/span as pass_through tracer/span. * add test for pass through tracer. * add missing interface to pass through tracer. * return SpanContext instead of contex.Context from Extract interface. - also remove PassThroughTracer * fix review comments. * add more test cases for traceContext extraction. * remove tidy temporarily from circle-ci target to avoid build failure. * allow header ending in dash '-'. * add inject test for non-zero value other than 01 for traceoption * add AddLink and Link interface to MockSpan * fix running go mod tidy on every build.
This commit is contained in:
@@ -44,9 +44,6 @@ type Tracer interface {
|
||||
|
||||
// WithResources attaches resource attributes to the Tracer.
|
||||
WithResources(res ...core.KeyValue) Tracer
|
||||
|
||||
// Note: see https://github.com/opentracing/opentracing-go/issues/127
|
||||
Inject(context.Context, Span, Injector)
|
||||
}
|
||||
|
||||
type FinishOptions struct {
|
||||
@@ -102,13 +99,6 @@ type Span interface {
|
||||
ModifyAttributes(...tag.Mutator)
|
||||
}
|
||||
|
||||
type Injector interface {
|
||||
// Inject serializes span context and tag.Map and inserts them in to
|
||||
// carrier associated with the injector. For example in case of http request,
|
||||
// span context could added to the request (carrier) as W3C Trace context header.
|
||||
Inject(core.SpanContext, tag.Map)
|
||||
}
|
||||
|
||||
// SpanOption apply changes to SpanOptions.
|
||||
type SpanOption func(*SpanOptions)
|
||||
|
||||
@@ -157,18 +147,6 @@ func Start(ctx context.Context, name string, opts ...SpanOption) (context.Contex
|
||||
return GlobalTracer().Start(ctx, name, opts...)
|
||||
}
|
||||
|
||||
// Inject is convenient function to inject current span context using injector.
|
||||
// Injector is expected to serialize span context and inject it in to a carrier.
|
||||
// An example of a carrier is http request.
|
||||
func Inject(ctx context.Context, injector Injector) {
|
||||
span := CurrentSpan(ctx)
|
||||
if span == nil {
|
||||
return
|
||||
}
|
||||
|
||||
span.Tracer().Inject(ctx, span, injector)
|
||||
}
|
||||
|
||||
// WithStartTime sets the start time of the span to provided time t, when it is started.
|
||||
// In absensce of this option, wall clock time is used as start time.
|
||||
// This option is typically used when starting of the span is delayed.
|
||||
|
||||
Reference in New Issue
Block a user