Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /www/wwwroot/mifepriston.org/node_modules/stream-throttle/src/ |
Upload File : |
var inherits = require('util').inherits; var Transform = require('stream').Transform; var TokenBucket = require('limiter').TokenBucket; /* * Throttle is a throttled stream implementing the stream.Transform interface. * Options: * rate (mandatory): the throttling rate in bytes per second. * chunksize (optional): the maximum chunk size into which larger writes are decomposed. * Any other options are passed to stream.Transform. */ function Throttle(opts, group) { if (group === undefined) group = new ThrottleGroup(opts); this.bucket = group.bucket; this.chunksize = group.chunksize; Transform.call(this, opts); } inherits(Throttle, Transform); Throttle.prototype._transform = function(chunk, encoding, done) { process(this, chunk, 0, done); }; function process(self, chunk, pos, done) { var slice = chunk.slice(pos, pos + self.chunksize); if (!slice.length) { // chunk fully consumed done(); return; } self.bucket.removeTokens(slice.length, function(err) { if (err) { done(err); return; } self.push(slice); process(self, chunk, pos + self.chunksize, done); }); } /* * ThrottleGroup throttles an aggregate of streams. * Options are the same as for Throttle. */ function ThrottleGroup(opts) { if (!(this instanceof ThrottleGroup)) return new ThrottleGroup(opts); opts = opts || {}; if (opts.rate === undefined) throw new Error('throttle rate is a required argument'); if (typeof opts.rate !== 'number' || opts.rate <= 0) throw new Error('throttle rate must be a positive number'); if (opts.chunksize !== undefined && (typeof opts.chunksize !== 'number' || opts.chunksize <= 0)) { throw new Error('throttle chunk size must be a positive number'); } this.rate = opts.rate; this.chunksize = opts.chunksize || this.rate/10; this.bucket = new TokenBucket(this.rate, this.rate, 'second', null); } /* * Create a new stream in the throttled group and returns it. * Any supplied options are passed to the Throttle constructor. */ ThrottleGroup.prototype.throttle = function(opts) { return new Throttle(opts, this); }; module.exports = { Throttle: Throttle, ThrottleGroup: ThrottleGroup };