Skip to content

Commit

Permalink
lib: refactor to use more primordials in internal/histogram.js
Browse files Browse the repository at this point in the history
Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: #36455
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
2 people authored and targos committed Jun 11, 2021
1 parent 613378d commit e12dbc8
Showing 1 changed file with 12 additions and 17 deletions.
29 changes: 12 additions & 17 deletions lib/internal/histogram.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const {
} = require('internal/util');

const { format } = require('util');
const { Map, Symbol } = primordials;
const { SafeMap, Symbol } = primordials;

const {
ERR_INVALID_ARG_TYPE,
Expand All @@ -19,11 +19,10 @@ const kHandle = Symbol('kHandle');
// record various metrics. This Histogram class provides a
// generally read-only view of the internal histogram.
class Histogram {
#handle = undefined;
#map = new Map();
#map = new SafeMap();

constructor(internal) {
this.#handle = internal;
this[kHandle] = internal;
}

[kInspect]() {
Expand All @@ -39,23 +38,23 @@ class Histogram {
}

get min() {
return this.#handle ? this.#handle.min() : undefined;
return this[kHandle]?.min();
}

get max() {
return this.#handle ? this.#handle.max() : undefined;
return this[kHandle]?.max();
}

get mean() {
return this.#handle ? this.#handle.mean() : undefined;
return this[kHandle]?.mean();
}

get exceeds() {
return this.#handle ? this.#handle.exceeds() : undefined;
return this[kHandle]?.exceeds();
}

get stddev() {
return this.#handle ? this.#handle.stddev() : undefined;
return this[kHandle]?.stddev();
}

percentile(percentile) {
Expand All @@ -65,26 +64,22 @@ class Histogram {
if (percentile <= 0 || percentile > 100)
throw new ERR_INVALID_ARG_VALUE.RangeError('percentile', percentile);

return this.#handle ? this.#handle.percentile(percentile) : undefined;
return this[kHandle]?.percentile(percentile);
}

get percentiles() {
this.#map.clear();
if (this.#handle)
this.#handle.percentiles(this.#map);
this[kHandle]?.percentiles(this.#map);
return this.#map;
}

reset() {
if (this.#handle)
this.#handle.reset();
this[kHandle]?.reset();
}

[kDestroy]() {
this.#handle = undefined;
this[kHandle] = undefined;
}

get [kHandle]() { return this.#handle; }
}

module.exports = {
Expand Down

0 comments on commit e12dbc8

Please sign in to comment.