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.
		
		
		
		
		
			
		
			
				
					43 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					43 lines
				
				1.0 KiB
			| 
											2 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | var Readable = require("readable-stream").Readable; | ||
|  | 
 | ||
|  | var utils = require("../utils"); | ||
|  | utils.inherits(NodejsStreamOutputAdapter, Readable); | ||
|  | 
 | ||
|  | /** | ||
|  | * A nodejs stream using a worker as source. | ||
|  | * @see the SourceWrapper in http://nodejs.org/api/stream.html
 | ||
|  | * @constructor | ||
|  | * @param {StreamHelper} helper the helper wrapping the worker | ||
|  | * @param {Object} options the nodejs stream options | ||
|  | * @param {Function} updateCb the update callback. | ||
|  | */ | ||
|  | function NodejsStreamOutputAdapter(helper, options, updateCb) { | ||
|  |     Readable.call(this, options); | ||
|  |     this._helper = helper; | ||
|  | 
 | ||
|  |     var self = this; | ||
|  |     helper.on("data", function (data, meta) { | ||
|  |         if (!self.push(data)) { | ||
|  |             self._helper.pause(); | ||
|  |         } | ||
|  |         if(updateCb) { | ||
|  |             updateCb(meta); | ||
|  |         } | ||
|  |     }) | ||
|  |         .on("error", function(e) { | ||
|  |             self.emit("error", e); | ||
|  |         }) | ||
|  |         .on("end", function () { | ||
|  |             self.push(null); | ||
|  |         }); | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | NodejsStreamOutputAdapter.prototype._read = function() { | ||
|  |     this._helper.resume(); | ||
|  | }; | ||
|  | 
 | ||
|  | module.exports = NodejsStreamOutputAdapter; |