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