@opentelemetry/api
Version:
Public API for OpenTelemetry
38 lines (37 loc) • 1.09 kB
JavaScript
import { NoopTracer } from "./NoopTracer.mjs";
//#region src/trace/ProxyTracer.ts
const NOOP_TRACER = new NoopTracer();
/**
* Proxy tracer provided by the proxy tracer provider
*
* @since 1.0.0
*/
var ProxyTracer = class {
constructor(provider, name, version, options) {
this._provider = provider;
this.name = name;
this.version = version;
this.options = options;
}
startSpan(name, options, context) {
return this._getTracer().startSpan(name, options, context);
}
startActiveSpan(_name, _options, _context, _fn) {
const tracer = this._getTracer();
return Reflect.apply(tracer.startActiveSpan, tracer, arguments);
}
/**
* Try to get a tracer from the proxy tracer provider.
* If the proxy tracer provider has no delegate, return a noop tracer.
*/
_getTracer() {
if (this._delegate) return this._delegate;
const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);
if (!tracer) return NOOP_TRACER;
this._delegate = tracer;
return this._delegate;
}
};
//#endregion
export { ProxyTracer };
//# sourceMappingURL=ProxyTracer.mjs.map