parent
cef1f2a65f
commit
907e39e5ab
@ -0,0 +1,41 @@ |
||||
const through = require('through2') |
||||
|
||||
module.exports = ObjectMultiplex |
||||
|
||||
|
||||
function ObjectMultiplex(opts){ |
||||
opts = opts || {} |
||||
// create multiplexer
|
||||
var mx = through.obj(function(chunk, enc, cb) { |
||||
var name = chunk.name |
||||
var data = chunk.data |
||||
var substream = mx.streams[name] |
||||
if (!substream) { |
||||
console.warn("orphaned data for stream " + name) |
||||
} else { |
||||
substream.push(data) |
||||
} |
||||
return cb() |
||||
}) |
||||
mx.streams = {} |
||||
// create substreams
|
||||
mx.createStream = function(name) { |
||||
var substream = mx.streams[name] = through.obj(function(chunk, enc, cb) { |
||||
mx.push({ |
||||
name: name, |
||||
data: chunk, |
||||
}) |
||||
return cb() |
||||
}) |
||||
mx.on('end', function() { |
||||
return substream.emit('end') |
||||
}) |
||||
if (opts.error) { |
||||
mx.on('error', function() { |
||||
return substream.emit('error') |
||||
}) |
||||
} |
||||
return substream |
||||
} |
||||
return mx |
||||
} |
Loading…
Reference in new issue