UNPKG

pmx

Version:

PM2/Keymetrics advanced API

39 lines (25 loc) 835 B
// Hacked from https://github.com/felixge/node-measured var units = require('../units'); var EWMA = require('../EWMA'); function Meter(opts) { var self = this; this._tickInterval = 5 * units.SECONDS; this._samples = opts.samples || opts.seconds || 1; this._timeframe = opts.timeframe || 60; this._rate = new EWMA(this._timeframe * units.SECONDS, this._tickInterval); if (opts.debug && opts.debug == true) return false; this._interval = setInterval(function() { self._rate.tick(); }, this._tickInterval); this._interval.unref(); } Meter.RATE_UNIT = units.SECONDS; Meter.prototype.mark = function(n) { n = n || 1; this._rate.update(n); }; Meter.prototype.val = function() { return Math.round(this._rate.rate(this._samples * Meter.RATE_UNIT) * 100 ) / 100; }; module.exports = Meter;