You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					37 lines
				
				963 B
			
		
		
			
		
	
	
					37 lines
				
				963 B
			| 
											3 years ago
										 | 'use strict' | ||
|  | 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') |