2022-07-12 09:00:22 +02:00

75 lines
2.6 KiB
JavaScript

/*
* Copyright The OpenTelemetry Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ContextAPI } from '../api/context';
import { getSpanContext, setSpan } from '../trace/context-utils';
import { NonRecordingSpan } from './NonRecordingSpan';
import { isSpanContextValid } from './spancontext-utils';
var context = ContextAPI.getInstance();
/**
* No-op implementations of {@link Tracer}.
*/
var NoopTracer = /** @class */ (function () {
function NoopTracer() {
}
// startSpan starts a noop span.
NoopTracer.prototype.startSpan = function (name, options, context) {
var root = Boolean(options === null || options === void 0 ? void 0 : options.root);
if (root) {
return new NonRecordingSpan();
}
var parentFromContext = context && getSpanContext(context);
if (isSpanContext(parentFromContext) &&
isSpanContextValid(parentFromContext)) {
return new NonRecordingSpan(parentFromContext);
}
else {
return new NonRecordingSpan();
}
};
NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) {
var opts;
var ctx;
var fn;
if (arguments.length < 2) {
return;
}
else if (arguments.length === 2) {
fn = arg2;
}
else if (arguments.length === 3) {
opts = arg2;
fn = arg3;
}
else {
opts = arg2;
ctx = arg3;
fn = arg4;
}
var parentContext = ctx !== null && ctx !== void 0 ? ctx : context.active();
var span = this.startSpan(name, opts, parentContext);
var contextWithSpanSet = setSpan(parentContext, span);
return context.with(contextWithSpanSet, fn, undefined, span);
};
return NoopTracer;
}());
export { NoopTracer };
function isSpanContext(spanContext) {
return (typeof spanContext === 'object' &&
typeof spanContext['spanId'] === 'string' &&
typeof spanContext['traceId'] === 'string' &&
typeof spanContext['traceFlags'] === 'number');
}
//# sourceMappingURL=NoopTracer.js.map