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
			| 
								 
											3 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;
							 |