In node v0.10.x, you probably just want the "finish" event of the Writable
stream.


On Fri, May 3, 2013 at 9:25 AM, Benjamin Pasero
<[email protected]>wrote:

> Thanks for the response Isaac. So I can not easily go to node 0.10 yet but
> given the advantages, will push for it.
>
> I have one more question: I guess util.pump() was also never 100% safe
> with regards to if the operation has completed or not? Even though I am
> called in the callback, the write stream might not have written all data
> yet, right? Is there any file specific event I can use to be pinged in case
> the operation is done?
>
> Ben
>
>
> On Friday, May 3, 2013 5:22:15 PM UTC+2, Isaac Schlueter wrote:
>
>> Benjamin,
>>
>> The readable.end event is not actually a guarantee that the entire
>> operation is completed, only that the "end" signal is being propagated
>> to the writable.  It could still take some time for the writable
>> stream to finish writing all the data it's been given.
>>
>> In v0.10, writable streams all have a "finish" event, which tells you
>> that the writable stream has received the end signal, and all of its
>> data has been flushed.  Prior to that, well, you kind of have to know
>> what sort of stream you were dealing with.  Most emit "close" at some
>> point, but that's not guaranteed.  There's no way to be sure in the
>> general case.  (One of many reasons for the streams refactor in 0.10.)
>>
>> If you are using pipe(), there's no need to call resume().  The pipe()
>> call will make the stream flow for you.  (Actually, prior to 0.10,
>> readable streams started out in a free-flowing state, and pause() was
>> not guaranteed to actually prevent "data" events.)
>>
>>
>> On Fri, May 3, 2013 at 7:15 AM, Benjamin Pasero
>> <[email protected]> wrote:
>> > So taking your feedback using node 0.8, this is what it has to look
>> like?
>> >
>> > var readS = fs.createReadStream("fileA.**txt");
>> > var writeS = fs.createWriteStream("fileB.**txt");
>> >
>> > readS.on("end", function() {
>> >    // Operation done
>> > });
>> >
>> > readS.on("error", function() {
>> >    // Operation error
>> > });
>> >
>> > writeS.on("error", function() {
>> >    // Operation error
>> > });
>> >
>> > readS.resumse();
>> >
>> > Right?
>> >
>> > On Friday, May 3, 2013 10:44:39 AM UTC+2, Benjamin Pasero wrote:
>> >>
>> >> Hi,
>> >>
>> >> I am missing a good example for how to adopt stream.pipe for my old
>> >> util.pump code when it comes to replacing a file with the contents of
>> >> another file. As of today, I am using code similar to this:
>> >>
>> >> var readS = fs.createReadStream("fileA.**txt");
>> >> var writeS = fs.createWriteStream("fileB.**txt");
>> >> util.pump(readS, writeS, function(error)
>> >>    // Operation done
>> >> });
>> >>
>> >> Now with stream.pipe I am uncertain if I am using it correctly. I am
>> >> wondering if I have to call resume() or not before piping and I also
>> wonder
>> >> how to register a callback when the operation is fully completed. My
>> attempt
>> >> is this:
>> >>
>> >> var readS = fs.createReadStream("fileA.**txt");
>> >> var writeS = fs.createWriteStream("fileB.**txt");
>> >> readS.pipe(writeS);
>> >>
>> >> readS.on("end", function() {
>> >>    // Operation done
>> >> });
>> >>
>> >> I would really appreciate if someone could tell me if this is the
>> right
>> >> way of doing it. As a related question, I am wondering if I should
>> open the
>> >> file with "w" or "r+". However, I think "w" is correct because I am
>> >> replacing the file contents.
>> >>
>> >> Thanks,
>> >> Ben
>> >
>> > --
>> > --
>> > Job Board: http://jobs.nodejs.org/
>> > Posting guidelines:
>> > https://github.com/joyent/**node/wiki/Mailing-List-**Posting-Guidelines<https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines>
>> > You received this message because you are subscribed to the Google
>> > Groups "nodejs" group.
>> > To post to this group, send email to [email protected]
>> > To unsubscribe from this group, send email to
>> > nodejs+un...@**googlegroups.com
>> > For more options, visit this group at
>> > http://groups.google.com/**group/nodejs?hl=en?hl=en<http://groups.google.com/group/nodejs?hl=en?hl=en>
>> >
>> > ---
>> > You received this message because you are subscribed to the Google
>> Groups
>> > "nodejs" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> an
>> > email to nodejs+un...@**googlegroups.com.
>> > For more options, visit 
>> > https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>.
>>
>> >
>> >
>>
>  --
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to