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();
};
