src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

nop.go (901B)


      1 package tracing
      2 
      3 import "context"
      4 
      5 // NopTracerProvider is a no-op tracing implementation.
      6 type NopTracerProvider struct{}
      7 
      8 var _ TracerProvider = (*NopTracerProvider)(nil)
      9 
     10 // Tracer returns a tracer which creates no-op spans.
     11 func (NopTracerProvider) Tracer(string, ...TracerOption) Tracer {
     12 	return nopTracer{}
     13 }
     14 
     15 type nopTracer struct{}
     16 
     17 var _ Tracer = (*nopTracer)(nil)
     18 
     19 func (nopTracer) StartSpan(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) {
     20 	return ctx, nopSpan{}
     21 }
     22 
     23 type nopSpan struct{}
     24 
     25 var _ Span = (*nopSpan)(nil)
     26 
     27 func (nopSpan) Name() string                    { return "" }
     28 func (nopSpan) Context() SpanContext            { return SpanContext{} }
     29 func (nopSpan) AddEvent(string, ...EventOption) {}
     30 func (nopSpan) SetProperty(any, any)            {}
     31 func (nopSpan) SetStatus(SpanStatus)            {}
     32 func (nopSpan) End()                            {}