Here's what I have done in the past, if I get an incomplete chunk, I  hang 
on to it and call done, I have technically consumed it by hanging on to it. 
When I get another chunk I check if that completes my partial chunk, if it 
does, I do this.push then call done, if I don't I hang to another partial 
chunk and call done anyways.

Instead of hanging on to the callback (done), just call it once you've put 
your partial chunk on to your _pendingChunks array

On Sunday, 14 April 2013 07:16:18 UTC-4, Mike Pilsbury wrote:
>
> I'm extending Transform, and I'm a little unclear when to 
> call transform._transform(chunk, encoding, callback)'s callback.
>
> The documentation says "Call the callback function only when the current 
> chunk is completely consumed. Note that there may or may not be output as a 
> result of any particular input chunk.". But what does "completely 
> consumed" mean?
>
> If I can't use the chunk yet (because I need to wait for more data for a 
> full packet, and the packet's length has to be in the packet's header), and 
> I keep a reference to the chunk, does that mean that I shouldn't call the 
> callback yet? If that's the case, I guess that I need to keep the callback 
> associated with each of these chunks.
>
>     this._pendingChunks = [];
>     ...
>     this._pendingChunks.push({chunk: chunk, callback: callback});
>
> Then I can call each chunk's callback (in a latter execution of 
> _transform) when I've used it to create and push a complete packet, and 
> I've no longer a need to reference the chunk.
>
> Or am I making things more complicated than they need to be?
>
>

-- 
-- 
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