"use strict";
|
// Copyright (c) Microsoft Corporation.
|
// Licensed under the MIT License.
|
Object.defineProperty(exports, "__esModule", { value: true });
|
exports.TracingContextImpl = exports.knownContextKeys = void 0;
|
exports.createTracingContext = createTracingContext;
|
/** @internal */
|
exports.knownContextKeys = {
|
span: Symbol.for("@azure/core-tracing span"),
|
namespace: Symbol.for("@azure/core-tracing namespace"),
|
};
|
/**
|
* Creates a new {@link TracingContext} with the given options.
|
* @param options - A set of known keys that may be set on the context.
|
* @returns A new {@link TracingContext} with the given options.
|
*
|
* @internal
|
*/
|
function createTracingContext(options = {}) {
|
let context = new TracingContextImpl(options.parentContext);
|
if (options.span) {
|
context = context.setValue(exports.knownContextKeys.span, options.span);
|
}
|
if (options.namespace) {
|
context = context.setValue(exports.knownContextKeys.namespace, options.namespace);
|
}
|
return context;
|
}
|
/** @internal */
|
class TracingContextImpl {
|
_contextMap;
|
constructor(initialContext) {
|
this._contextMap =
|
initialContext instanceof TracingContextImpl
|
? new Map(initialContext._contextMap)
|
: new Map();
|
}
|
setValue(key, value) {
|
const newContext = new TracingContextImpl(this);
|
newContext._contextMap.set(key, value);
|
return newContext;
|
}
|
getValue(key) {
|
return this._contextMap.get(key);
|
}
|
deleteValue(key) {
|
const newContext = new TracingContextImpl(this);
|
newContext._contextMap.delete(key);
|
return newContext;
|
}
|
}
|
exports.TracingContextImpl = TracingContextImpl;
|
//# sourceMappingURL=tracingContext.js.map
|