Skip to content

Commit

Permalink
doc, test: tracing channel hasSubscribers getter
Browse files Browse the repository at this point in the history
follow up work for #51915
  • Loading branch information
tlhunter committed May 9, 2024
1 parent a833c9e commit a9a5bd6
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 0 deletions.
37 changes: 37 additions & 0 deletions doc/api/diagnostics_channel.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
'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);
}

Check failure on line 52 in test/parallel/test-diagnostics-channel-tracing-channel-has-subscribers.js

View workflow job for this annotation

GitHub Actions / lint-js-and-md

Too many blank lines at the end of file. Max of 0 allowed

0 comments on commit a9a5bd6

Please sign in to comment.