doc, test: tracing channel hasSubscribers getter

follow up work for https://github.com/nodejs/node/pull/51915

PR-URL: https://github.com/nodejs/node/pull/52908
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Thomas Hunter II 2024-07-24 09:48:40 -07:00 committed by GitHub
parent 35f92d953c
commit 36e44f1230
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 88 additions and 0 deletions

View File

@ -977,6 +977,43 @@ channels.asyncStart.bindStore(myStore, (data) => {
});
```
#### `tracingChannel.hasSubscribers`
<!-- YAML
added:
- v22.0.0
- v20.13.0
-->
> Stability: 1 - Experimental
* Returns: {boolean} `true` if any of the individual channels has a subscriber,
`false` if not.
This is a helper method available on a [`TracingChannel`][] instance to check if
any of the [TracingChannel Channels][] have subscribers. A `true` is returned if
any of them have at least one subscriber, a `false` is returned otherwise.
```mjs
import diagnostics_channel from 'node:diagnostics_channel';
const channels = diagnostics_channel.tracingChannel('my-channel');
if (channels.hasSubscribers) {
// Do something
}
```
```cjs
const diagnostics_channel = require('node:diagnostics_channel');
const channels = diagnostics_channel.tracingChannel('my-channel');
if (channels.hasSubscribers) {
// Do something
}
```
### TracingChannel Channels
A TracingChannel is a collection of several diagnostics\_channels representing

View File

@ -0,0 +1,51 @@
'use strict';
const common = require('../common');
const dc = require('diagnostics_channel');
const assert = require('assert');
const handler = common.mustNotCall();
{
const handlers = {
start: common.mustNotCall()
};
const channel = dc.tracingChannel('test');
assert.strictEqual(channel.hasSubscribers, false);
channel.subscribe(handlers);
assert.strictEqual(channel.hasSubscribers, true);
channel.unsubscribe(handlers);
assert.strictEqual(channel.hasSubscribers, false);
channel.start.subscribe(handler);
assert.strictEqual(channel.hasSubscribers, true);
channel.start.unsubscribe(handler);
assert.strictEqual(channel.hasSubscribers, false);
}
{
const handlers = {
asyncEnd: common.mustNotCall()
};
const channel = dc.tracingChannel('test');
assert.strictEqual(channel.hasSubscribers, false);
channel.subscribe(handlers);
assert.strictEqual(channel.hasSubscribers, true);
channel.unsubscribe(handlers);
assert.strictEqual(channel.hasSubscribers, false);
channel.asyncEnd.subscribe(handler);
assert.strictEqual(channel.hasSubscribers, true);
channel.asyncEnd.unsubscribe(handler);
assert.strictEqual(channel.hasSubscribers, false);
}