27 lines
626 B
JavaScript
27 lines
626 B
JavaScript
module.exports = Meter
|
|
|
|
var util = require("util")
|
|
|
|
var Transform = require("stream").Transform
|
|
|
|
if (!Transform) {
|
|
Transform = require("readable-stream/transform")
|
|
}
|
|
|
|
function Meter(maxBytes) {
|
|
if (!(this instanceof Meter)) return new Meter(maxBytes)
|
|
Transform.call(this)
|
|
|
|
this.bytes = 0
|
|
this.maxBytes = maxBytes || Number.MAX_VALUE
|
|
}
|
|
util.inherits(Meter, Transform)
|
|
|
|
Meter.prototype._transform = function (chunk, encoding, cb) {
|
|
this.bytes += chunk.length
|
|
this.push(chunk)
|
|
if (this.bytes > this.maxBytes) {
|
|
return cb(new Error("Stream exceeded specified max of " + this.maxBytes + " bytes."))
|
|
}
|
|
cb()
|
|
} |