UNPKG

whistle

Version:

HTTP, HTTPS, Websocket debugging proxy

44 lines (36 loc) 953 B
var Transform = require('pipestream').Transform; var util = require('util'); function SpeedTransform(options) { if (!(this instanceof SpeedTransform)) { return new SpeedTransform(options); } Transform.call(this); options = options || {}; var value = parseInt(options.speed * 1000 / 8); if (value > 0) { this._speed = value; } if ((value = parseInt(options.delay)) > 0) { this._delay = value; } } util.inherits(SpeedTransform, Transform); SpeedTransform.prototype._transform = function(chunk, encoding, callback) { var self = this; var cb = function() { if (chunk && self._speed) { setTimeout(function() { callback(null, chunk); }, Math.round(chunk.length * 1000 / self._speed)); } else { callback(null, chunk); } }; if (self._delay) { var delay = self._delay; self._delay = null; return setTimeout(cb, delay); } cb(); }; module.exports = SpeedTransform;