123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- var stream = require("readable-stream");
- var duplex2 = module.exports = function duplex2(options, writable, readable) {
- return new DuplexWrapper(options, writable, readable);
- };
- var DuplexWrapper = exports.DuplexWrapper = function DuplexWrapper(options, writable, readable) {
- if (typeof readable === "undefined") {
- readable = writable;
- writable = options;
- options = null;
- }
- options = options || {};
- options.objectMode = true;
- stream.Duplex.call(this, options);
- this._bubbleErrors = (typeof options.bubbleErrors === "undefined") || !!options.bubbleErrors;
- this._writable = writable;
- this._readable = readable;
- var self = this;
- writable.once("finish", function() {
- self.end();
- });
- this.once("finish", function() {
- writable.end();
- });
- readable.on("data", function(e) {
- if (!self.push(e)) {
- readable.pause();
- }
- });
- readable.once("end", function() {
- return self.push(null);
- });
- if (this._bubbleErrors) {
- writable.on("error", function(err) {
- return self.emit("error", err);
- });
- readable.on("error", function(err) {
- return self.emit("error", err);
- });
- }
- };
- DuplexWrapper.prototype = Object.create(stream.Duplex.prototype, {constructor: {value: DuplexWrapper}});
- DuplexWrapper.prototype._write = function _write(input, encoding, done) {
- this._writable.write(input, encoding, done);
- };
- DuplexWrapper.prototype._read = function _read(n) {
- this._readable.resume();
- };
|