...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package trace
16
17 import (
18 "context"
19
20 "go.opentelemetry.io/otel/attribute"
21 "go.opentelemetry.io/otel/codes"
22 "go.opentelemetry.io/otel/trace/embedded"
23 )
24
25
26
27
28
29
30
31 func NewNoopTracerProvider() TracerProvider {
32 return noopTracerProvider{}
33 }
34
35 type noopTracerProvider struct{ embedded.TracerProvider }
36
37 var _ TracerProvider = noopTracerProvider{}
38
39
40 func (p noopTracerProvider) Tracer(string, ...TracerOption) Tracer {
41 return noopTracer{}
42 }
43
44
45 type noopTracer struct{ embedded.Tracer }
46
47 var _ Tracer = noopTracer{}
48
49
50
51 func (t noopTracer) Start(ctx context.Context, name string, _ ...SpanStartOption) (context.Context, Span) {
52 span := SpanFromContext(ctx)
53 if _, ok := span.(nonRecordingSpan); !ok {
54
55 span = noopSpan{}
56 }
57 return ContextWithSpan(ctx, span), span
58 }
59
60
61 type noopSpan struct{ embedded.Span }
62
63 var _ Span = noopSpan{}
64
65
66 func (noopSpan) SpanContext() SpanContext { return SpanContext{} }
67
68
69 func (noopSpan) IsRecording() bool { return false }
70
71
72 func (noopSpan) SetStatus(codes.Code, string) {}
73
74
75 func (noopSpan) SetError(bool) {}
76
77
78 func (noopSpan) SetAttributes(...attribute.KeyValue) {}
79
80
81 func (noopSpan) End(...SpanEndOption) {}
82
83
84 func (noopSpan) RecordError(error, ...EventOption) {}
85
86
87 func (noopSpan) AddEvent(string, ...EventOption) {}
88
89
90 func (noopSpan) SetName(string) {}
91
92
93 func (noopSpan) TracerProvider() TracerProvider { return noopTracerProvider{} }
94
View as plain text