Spaces:
Sleeping
Sleeping
| var util = require('util') | |
| var stream = require('readable-stream') | |
| var delegate = require('delegates') | |
| var Tracker = require('./tracker.js') | |
| var TrackerStream = module.exports = function (name, size, options) { | |
| stream.Transform.call(this, options) | |
| this.tracker = new Tracker(name, size) | |
| this.name = name | |
| this.id = this.tracker.id | |
| this.tracker.on('change', delegateChange(this)) | |
| } | |
| util.inherits(TrackerStream, stream.Transform) | |
| function delegateChange (trackerStream) { | |
| return function (name, completion, tracker) { | |
| trackerStream.emit('change', name, completion, trackerStream) | |
| } | |
| } | |
| TrackerStream.prototype._transform = function (data, encoding, cb) { | |
| this.tracker.completeWork(data.length ? data.length : 1) | |
| this.push(data) | |
| cb() | |
| } | |
| TrackerStream.prototype._flush = function (cb) { | |
| this.tracker.finish() | |
| cb() | |
| } | |
| delegate(TrackerStream.prototype, 'tracker') | |
| .method('completed') | |
| .method('addWork') | |
| .method('finish') | |