trace_events: use private fields instead of symbols for `Tracing`

PR-URL: https://github.com/nodejs/node/pull/51180
Refs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_properties
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz.nizipli@sentry.io>
This commit is contained in:
Jungku Lee 2023-12-29 08:20:22 +09:00 committed by GitHub
parent 9db4bf40d4
commit 9fe0424baa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 16 deletions

View File

@ -3,13 +3,9 @@
const {
ArrayPrototypeJoin,
SafeSet,
Symbol,
} = primordials;
const { hasTracing } = internalBinding('config');
const kHandle = Symbol('handle');
const kEnabled = Symbol('enabled');
const kCategories = Symbol('categories');
const kMaxTracingCount = 10;
@ -33,16 +29,19 @@ const {
const enabledTracingObjects = new SafeSet();
class Tracing {
#handle;
#categories;
#enabled = false;
constructor(categories) {
this[kHandle] = new CategorySet(categories);
this[kCategories] = categories;
this[kEnabled] = false;
this.#handle = new CategorySet(categories);
this.#categories = categories;
}
enable() {
if (!this[kEnabled]) {
this[kEnabled] = true;
this[kHandle].enable();
if (!this.#enabled) {
this.#enabled = true;
this.#handle.enable();
enabledTracingObjects.add(this);
if (enabledTracingObjects.size > kMaxTracingCount) {
process.emitWarning(
@ -54,19 +53,19 @@ class Tracing {
}
disable() {
if (this[kEnabled]) {
this[kEnabled] = false;
this[kHandle].disable();
if (this.#enabled) {
this.#enabled = false;
this.#handle.disable();
enabledTracingObjects.delete(this);
}
}
get enabled() {
return this[kEnabled];
return this.#enabled;
}
get categories() {
return ArrayPrototypeJoin(this[kCategories], ',');
return ArrayPrototypeJoin(this.#categories, ',');
}
[customInspectSymbol](depth, opts) {

View File

@ -2920,7 +2920,7 @@ assert.strictEqual(
try {
const trace = require('trace_events').createTracing({ categories: ['fo'] });
const actualDepth0 = util.inspect({ trace }, { depth: 0 });
assert.strictEqual(actualDepth0, '{ trace: [Tracing] }');
assert.strictEqual(actualDepth0, '{ trace: Tracing {} }');
const actualDepth1 = util.inspect({ trace }, { depth: 1 });
assert.strictEqual(
actualDepth1,