you mean _read() of course, right? ;)

Am Dienstag, 5. August 2014 13:50:24 UTC+2 schrieb Floby:
>
> Hello,
>
> You shouldn't be the one implementing .resume() .pause() and 
> emit('readble') or emit('data')
> This is why streams have been rewritten.
> The API for implementing a readable stream is to inherit from 
> stream.Readable and implement _write() and optionally _flush()
> http://nodejs.org/api/stream.html#stream_api_for_stream_implementors
>
>
>
> On Monday, 4 August 2014 14:46:42 UTC+2, manimal45 wrote:
>>
>> Hi, I'm unable to understand how exactly readablestream 'data' event 
>> works (I'm using node v0.11.13).
>>
>> I have this simple example : 
>>
>> var util = require('util'),
>>     stream = require("stream");
>>
>> // A simple readable stream
>> var R = function(){
>>     stream.Readable.call(this,{objectMode : true});
>>     this.index = 1;
>> }
>> // R inherits from Readable
>> util.inherits(R, stream.Readable);
>>
>> // @resume
>> // On Resume, starts a timer pushing {index : #} every second
>> // Fire readable after 1.5 second
>> // Clear interval after 5 seconds
>> // So basically, a consumer should receive about 5 messages 
>> R.prototype.resume= function(){
>>     console.log("R.resume");
>>     var self= this;
>>     this.timer = setInterval(this.pusher.bind(this), 1000);
>>     setTimeout(this.emit.bind(this, "readable"),1500);
>>     setTimeout(this.emit.bind(this, null), 5000);
>>     setTimeout(function(){clearInterval(self.timer)}, 5000);
>> }
>>
>>
>> // The function invoked by resume to push messages
>> R.prototype.pusher = function(){
>>     console.log("R.push");
>>     var msg = {index : this.index++};
>>        this.push(msg);
>> };
>>
>> R.prototype._read= function(){
>>     var self= this;
>>     console.log("R._read");
>> }
>>
>> R.prototype.pause= function(){
>>     console.log("R.pause");
>>     clearInterval(this.timer);
>> }
>> if (!module.parent){
>>     var r = new R();
>>     // This is never called ?!
>>     r.on("data", function(data){
>>         console.log("received data", data);
>>     });
>>
>>   // This works but good luck to manage edge cases !
>>     //r.on('readable', function() {
>>     //    var chunk;
>>     //    while (null !== (msg = r.read())) {
>>     //        console.log('got %d bytes of data', msg);
>>     //    }
>>     //});
>> }
>>
>>
>> The 'data' listener never gets called.
>> The while loop works after 'readable' event gets fired but does not look 
>> like what doc says.
>>  
>> Any help very welcome !
>>
>>
>>
>>
>>
>>
>>
>>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/7a879cc3-e16a-4dd9-bf84-d75cb6d3ed69%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to