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.
