...

Source file src/github.com/opentracing/opentracing-go/globaltracer.go

Documentation: github.com/opentracing/opentracing-go

     1  package opentracing
     2  
     3  type registeredTracer struct {
     4  	tracer       Tracer
     5  	isRegistered bool
     6  }
     7  
     8  var (
     9  	globalTracer = registeredTracer{NoopTracer{}, false}
    10  )
    11  
    12  // SetGlobalTracer sets the [singleton] opentracing.Tracer returned by
    13  // GlobalTracer(). Those who use GlobalTracer (rather than directly manage an
    14  // opentracing.Tracer instance) should call SetGlobalTracer as early as
    15  // possible in main(), prior to calling the `StartSpan` global func below.
    16  // Prior to calling `SetGlobalTracer`, any Spans started via the `StartSpan`
    17  // (etc) globals are noops.
    18  func SetGlobalTracer(tracer Tracer) {
    19  	globalTracer = registeredTracer{tracer, true}
    20  }
    21  
    22  // GlobalTracer returns the global singleton `Tracer` implementation.
    23  // Before `SetGlobalTracer()` is called, the `GlobalTracer()` is a noop
    24  // implementation that drops all data handed to it.
    25  func GlobalTracer() Tracer {
    26  	return globalTracer.tracer
    27  }
    28  
    29  // StartSpan defers to `Tracer.StartSpan`. See `GlobalTracer()`.
    30  func StartSpan(operationName string, opts ...StartSpanOption) Span {
    31  	return globalTracer.tracer.StartSpan(operationName, opts...)
    32  }
    33  
    34  // InitGlobalTracer is deprecated. Please use SetGlobalTracer.
    35  func InitGlobalTracer(tracer Tracer) {
    36  	SetGlobalTracer(tracer)
    37  }
    38  
    39  // IsGlobalTracerRegistered returns a `bool` to indicate if a tracer has been globally registered
    40  func IsGlobalTracerRegistered() bool {
    41  	return globalTracer.isRegistered
    42  }
    43  

View as plain text