nop.go raw

   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()                            {}
  33