I'm wondering, does someone know a module that is able to aggregate multiple streams into 1. For example you give it 3 readable streams and you get 1 stream emitting all `data ` events from these 3 streams and emitting the `end` event when the 3 streams are ended. Same thing for writable streams, where when you write, you actually write to 3 streams. And a combinaison of both for writable/readable streams.
> I'm wondering, does someone know a module that is able to aggregate > multiple streams into 1. > For example you give it 3 readable streams and you get 1 stream emitting > all `data ` events from these 3 streams and emitting the `end` event when > the 3 streams are ended.
> Same thing for writable streams, where when you write, you actually write > to 3 streams.
> And a combinaison of both for writable/readable streams.
On Mon, Sep 3, 2012 at 2:44 AM, lbdremy <remyloubra...@gmail.com> wrote:
> Hello,
> I'm wondering, does someone know a module that is able to aggregate
> multiple streams into 1.
> For example you give it 3 readable streams and you get 1 stream emitting
> all `data ` events from these 3 streams and emitting the `end` event when
> the 3 streams are ended.
> Same thing for writable streams, where when you write, you actually write
> to 3 streams.
> And a combinaison of both for writable/readable streams.
The aggregate module does the job of aggretate 3 readables stream into 1 with the Cat "class", thanks.
The code that you propose Raynos doesn't work for this case, because when the first readable stream will emit "end", the pipe method will call the end method of the writable stream.
Which means the writable stream is not more writable since "this.writable" is set to false when the end method is called. So next time another of the readable streams will emit "data", two things can happen, the pipe method call the write method of the writable stream in this case the writable stream shoud/will throw an error since the end method has been called before and "this.writable" is false or the data emitted will be ignored because the writable stream has its "this.writable" set to false. Am I right or I miss something important in the code?
For the second piece of code, you are completely right, I haven't think about it but it seems there is no need to do some sort of control on the different events since the trouble happens when data are emitted when the method end has already been called, in this case it can't happen. But maybe it would be nice to have a stream who know exactly how many streams will be piped and so return false when write is called until all streams are piped or cache the data emitted until all streams are piped.
Interesting, why this could not be considered as demultiplexer and multiplexer?
Tell me more, thank you.
Le lundi 3 septembre 2012 18:19:34 UTC+1, Raynos a écrit :
> On Mon, Sep 3, 2012 at 2:44 AM, lbdremy <remylo...@gmail.com <javascript:>
> > wrote:
>> Hello,
>> I'm wondering, does someone know a module that is able to aggregate >> multiple streams into 1. >> For example you give it 3 readable streams and you get 1 stream emitting >> all `data ` events from these 3 streams and emitting the `end` event when >> the 3 streams are ended.
>> Same thing for writable streams, where when you write, you actually write >> to 3 streams.
>> And a combinaison of both for writable/readable streams.
"An electronic multiplexer makes it possible for several signals to
share one device or resource, for example one A/D converter or one
communication line, instead of having one device per input signal.
On the other hand, a demultiplexer (or demux) is a device taking a
single input signal and selecting one of many data-output-lines, which
is connected to the single input. A multiplexer is often used with a
complementary demultiplexer on the receiving end"
On Sun, Sep 9, 2012 at 5:36 PM, lbdremy <remyloubra...@gmail.com> wrote:
> Thanks for your answers :),
> The aggregate module does the job of aggretate 3 readables stream into 1
> with the Cat "class", thanks.
> The code that you propose Raynos doesn't work for this case, because when
> the first readable stream will emit "end", the pipe method will call the end
> method of the writable stream.
> Which means the writable stream is not more writable since "this.writable"
> is set to false when the end method is called. So next time another of the
> readable streams will emit "data", two things can happen, the pipe method
> call the write method of the writable stream in this case the writable
> stream shoud/will throw an error since the end method has been called before
> and "this.writable" is false or the data emitted will be ignored because the
> writable stream has its "this.writable" set to false. Am I right or I miss
> something important in the code?
> For the second piece of code, you are completely right, I haven't think
> about it but it seems there is no need to do some sort of control on the
> different events since the trouble happens when data are emitted when the
> method end has already been called, in this case it can't happen. But maybe
> it would be nice to have a stream who know exactly how many streams will be
> piped and so return false when write is called until all streams are piped
> or cache the data emitted until all streams are piped.
> Interesting, why this could not be considered as demultiplexer and
> multiplexer?
> Tell me more, thank you.
> Le lundi 3 septembre 2012 18:19:34 UTC+1, Raynos a écrit :
>> On Mon, Sep 3, 2012 at 2:44 AM, lbdremy <remylo...@gmail.com> wrote:
>>> Hello,
>>> I'm wondering, does someone know a module that is able to aggregate
>>> multiple streams into 1.
>>> For example you give it 3 readable streams and you get 1 stream emitting
>>> all `data ` events from these 3 streams and emitting the `end` event when
>>> the 3 streams are ended.
>>> Same thing for writable streams, where when you write, you actually write
>>> to 3 streams.
>>> And a combinaison of both for writable/readable streams.
On Monday, September 3, 2012 5:44:24 AM UTC-4, lbdremy wrote:
> Hello,
> I'm wondering, does someone know a module that is able to aggregate > multiple streams into 1. > For example you give it 3 readable streams and you get 1 stream emitting > all `data ` events from these 3 streams and emitting the `end` event when > the 3 streams are ended. > Same thing for writable streams, where when you write, you actually write > to 3 streams. > And a combinaison of both for writable/readable streams.